Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование iOS/iPhone
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
aply
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 40
#1

Свой UIView - в каком методе добавить KVO ?

28.05.2014, 11:53. Просмотров 661. Ответов 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 ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2014, 11:53
Ответы с готовыми решениями:

Как добавить собственный UIView в нужное место?
Есть myView.xib, в котором один View с кнопочками. Есть класс MyUIView от...

Добавить два UITextView в UIView программно
Привет! Не могу сообразить как добавить два UITextView в UIView программно что...

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

UIView с PageController
Здравствуйте! Может кто подсказать в чем проблема, хочу сделать UIView с...

UIBezierPath vs UIView
Всем доброго времени суток! Мне нужен ваш совет по поводу отрисовки в UIVIew. ...

5
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
28.05.2014, 12:17 #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.
Лучше воспользуйтесь событиями кнопки.
0
noname_club
105 / 96 / 12
Регистрация: 01.05.2013
Сообщений: 603
28.05.2014, 12:23 #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;
}
Также еще можно через нотификации, но думаю это лишнее.
0
aply
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 40
28.05.2014, 12:42  [ТС] #4
Про события можно поподробнее. Какое событие происходит, когда меняется hidden?
Немного не понял, это через Connections Inspector делается?
0
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
28.05.2014, 13:53 #5
В IB есть "Sent Events".
Программно это делаетcя методом:
Objective-C
1
[button addTarget:<#(id)#> action:<#(SEL)#> forControlEvents:<#(UIControlEvents)#>];
0
aply
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 40
28.05.2014, 14:50  [ТС] #6
В общем, понятно, что ничего не понятно... Я перепробовал все пункты из Sent Events.
0
28.05.2014, 14:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2014, 14:50

Constraints и размер UIView
У меня, допустим, есть UIView добавленная на родительскую View и к ней...

Рекурсивное создание UIView
Здравствуйте! Подскажите как сделать рекурсивное создание 15 UIView, каждая...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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