Форум программистов, компьютерный форум CyberForum.ru

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
aply
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 40
#1

Свой UIView - в каком методе добавить KVO ? - Программирование iOS

28.05.2014, 11:53. Просмотров 564. Ответов 5
Метки нет (Все метки)

Есть CustomView,наследник UIView, с кнопкой и индикатором.
В коде другого класса использую этот вью и меняю видимость кнопки.
При этом если кнопка становится невидимой, должен появляться индикатор.

Написал такой код внутри своего UIView
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if ([object isKindOfClass:[UIButton class]]) {
        UIButton* btn = (UIButton*) object;
        if ([keyPath isEqualToString:@"hidden"]) {
            if (btn.hidden) {
                NSLog(@"Button hidden");
                self.activityIndicator.hidden=NO;
                [self.activityIndicator startAnimating];
            } else {
                [self.activityIndicator stopAnimating];
                NSLog(@"Button not hidden");
            }
        }
    }
}
В коде другого класса после инициализации своего вью пишу:
Objective-C
1
[customView.pButton addObserver:customView forKeyPath:@"hidden" options:0 context:nil];
А нельзя это перенести в код моего вью?
Если да, то в какой метод? Пробовал добавить в initWithFrame:
Objective-C
1
2
3
4
5
6
7
8
9
- (id)initWithFrame:(CGRect)frame
{
 
    self = [super initWithFrame:frame];
    if (self) {
        [self.pButton addObserver:self forKeyPath:@"hidden" options:0 context:nil];
    }
    return self;
}
но так не работает.
Есть у UIView аналог viewDidLoad ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2014, 11:53     Свой UIView - в каком методе добавить KVO ?
Посмотрите здесь:

Добавить два UITextView в UIView программно - Swift
Привет! Не могу сообразить как добавить два UITextView в UIView программно что бы эти две текстовые вьюхи расположились равномерно...

Как добавить собственный UIView в нужное место? - Программирование iOS
Есть myView.xib, в котором один View с кнопочками. Есть класс MyUIView от IUView. В IB класс myUIView не выходит для привязки к View...

Обмен свойствами двух UIViewController посредством KVO - Objective-C
Имеется 2 вьюконтроллера. В первом есть @property number. Во втором нужно отследить его изменение. Использую метод во втором: ; ...

UIView с PageController - Программирование iOS
Здравствуйте! Может кто подсказать в чем проблема, хочу сделать UIView с PageController(чтобы на одной вьюшке было 7 экранов) Делаю по...

Анимация UIView - Программирование iOS
Есть 3 view, которые лежат друг на друге вот так: |------------------| | 1 | | |-------------| | | | 2 ...

UIBezierPath vs UIView - Программирование iOS
Всем доброго времени суток! Мне нужен ваш совет по поводу отрисовки в UIVIew. У меня следующая ситуация: Есть мой кастомный класс...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
28.05.2014, 12:17     Свой UIView - в каком методе добавить KVO ? #2
Although the classes of the UIKit framework generally do not support KVO, you can still implement it in the custom objects of your application, including custom views.
Лучше воспользуйтесь событиями кнопки.
noname_club
102 / 90 / 9
Регистрация: 01.05.2013
Сообщений: 583
28.05.2014, 12:23     Свой UIView - в каком методе добавить KVO ? #3
При этом если кнопка становится невидимой, должен появляться индикатор.
Objective-C
1
2
3
4
5
6
7
8
9
-(bool) getButtonVisible {
   return !self.button.hidden;
}
 
-(void) setButtonVisible: (bool) visible {
 
      self.button.hidden = !visible;
      self.indicator.hidden = visible;
}
Также еще можно через нотификации, но думаю это лишнее.
aply
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 40
28.05.2014, 12:42  [ТС]     Свой UIView - в каком методе добавить KVO ? #4
Про события можно поподробнее. Какое событие происходит, когда меняется hidden?
Немного не понял, это через Connections Inspector делается?
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
28.05.2014, 13:53     Свой UIView - в каком методе добавить KVO ? #5
В IB есть "Sent Events".
Программно это делаетcя методом:
Objective-C
1
[button addTarget:<#(id)#> action:<#(SEL)#> forControlEvents:<#(UIControlEvents)#>];
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2014, 14:50     Свой UIView - в каком методе добавить KVO ?
Еще ссылки по теме:

Рекурсивное создание UIView - Программирование iOS
Здравствуйте! Подскажите как сделать рекурсивное создание 15 UIView, каждая новая view должна располагаться поверх предыдущей. Спасибо!

Constraints и размер UIView - Программирование iOS
У меня, допустим, есть UIView добавленная на родительскую View и к ней применены space constraints со всех четырех сторон, то есть она...

Прижать UIView к низу - Программирование iOS
Подскажите как в коде прижать UIView к низу родительской вьюшки?

Изменить содержимое UIView сдвигом - Программирование iOS
Добрый день. Проблема в следующем: в методе viewDidLoad основного ViewController-а создаётся объект типа myView:UIView //...

Программное управление размерами UIView - Objective-C
итак начнем с того, что нам предоставляет ObjC из коробки ; метод мгновенно установит параметры прямоугольника области view ...

Создание UIView внутри UIScrollView программно - Objective-C
Ув. форумчане - нужна помощь. Как работать с интерфейс билдером я разобрался - теперь есть задача сделать интерфейс из кода. Сейчас...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
aply
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 40
28.05.2014, 14:50  [ТС]     Свой UIView - в каком методе добавить KVO ? #6
В общем, понятно, что ничего не понятно... Я перепробовал все пункты из Sent Events.
Yandex
Объявления
28.05.2014, 14:50     Свой UIView - в каком методе добавить KVO ?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru