UILabel объекта NSNotificationCenter

что не так с этим кодом...

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(MySubViewNotification:) name:@"MySubViewNotification" object:nil];

 -(void)MySubViewNotification:(UILabel*)GenericLabel
 {

    GenericLabel.textColor = [UIColor whiteColor]; ---- Error ----
    GenericLabel.text = @"cwxcwxc"; ---- Error ----

    NSLog(@"%@", GenericLabel);
 }

 NSLog.

 NSConcreteNotification 0x1759c6c0 {name = MySubViewNotification; object = <UILabel: 0x175aace0; frame = (175 5; 62 15); text = '1.35'; clipsToBounds = YES; opaque = NO; autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x175aad80>>}

 Errror

-[NSConcreteNotification setText:]: unrecognized selector sent to instance 0x165a4270
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSConcreteNotification setText:]: unrecognized selector sent to instance 0x165a4270'

person Alan10977    schedule 21.02.2014    source источник


Ответы (1)


Ваш метод, вызываемый уведомлением, должен иметь подпись:

- (void)mySubViewNotification:(NSNotification *)note

(обратите внимание на первую букву нижнего регистра - стандарты - имена классов начинаются с заглавных букв, методы со строчными буквами, соответственно обновите свой код и параметр, являющийся уведомлением)

Затем вы можете добавить в метод:

UILabel *label = note.object;
label.textColor = [UIColor whiteColor];

потому что уведомление передается вам как параметр, и вам нужно получить от него вложенную информацию (в данном случае метку).

person Wain    schedule 21.02.2014
comment
Спасибо, но добавить ошибку уведомления [NSNotificationCenter defaultCenter] addObserver: self selector: @ selector (MySubViewNotification:) name: @MySubViewNotification object: nil]; - person Alan10977; 22.02.2014
comment
Я не понимаю вашего комментария. - person Wain; 22.02.2014
comment
Когда я создаю свое уведомление, [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(MySubViewNotification:) name:@MySubViewNotification object:nil]; у меня *** Завершение приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «-[MasterViewController MySubViewNotification:]: нераспознанный селектор отправлен в экземпляр 0x15d4bcf0» - person Alan10977; 22.02.2014
comment
Поскольку вы не исправили имя метода для стандартов именования (строчная буква) developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ - person Wain; 22.02.2014