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

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

Восстановить пароль Регистрация
 
aply
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 40
28.05.2014, 11:53     Свой UIView - в каком методе добавить KVO ? #1
Есть 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 ?
Посмотрите здесь:

Программное управление размерами UIView Objective-C
UIBezierPath vs UIView
Рекурсивное создание UIView
Анимация UIView
UIView с PageController
Как добавить собственный UIView в нужное место?
Вращение UIView по типу часовой стрелки
Изменить содержимое UIView сдвигом
Обмен свойствами двух UIViewController посредством KVO Objective-C
Прижать UIView к низу
Constraints и размер UIView
Создание UIView внутри UIScrollView программно Objective-C

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zulkis
 Аватар для 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
 Аватар для noname_club
102 / 90 / 9
Регистрация: 01.05.2013
Сообщений: 574
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
 Аватар для 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)#>];
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 ?
Ответ Создать тему
Опции темы

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