2010-06-09 1 views
0

Эта строка кода находится в AController.miPhone. О цели действия снова

UIBarButtonItem *addButton = [[UIBarButtonItem alloc] 
    initWithBarButtonSystemItem:UIBarButtonSystemItemAdd 
    target:self 
    action:@selector(addItem)]; 

И - (Недействительными) AddItem: (идентификатор) отправителя; также находится в AController.m.

Если я хочу вызвать метод - (void) addItem1: (id) отправитель; в BController.m, как я могу изменить его работу? Что я должен передать целевому параметру?

Большое спасибо!

ответ

0

Вы должны передать экземпляр BContorller. Если вы хотите больше прокомментировать, и я увижу, что я могу сделать в 1 час, когда я свободна.

BCont=[[BController alloc] init]; 
    UIBarButtonItem *addButton = [[UIBarButtonItem alloc] 
    initWithBarButtonSystemItem:UIBarButtonSystemItemAdd 
    target:BCont 
    action:@selector(addItem)]; 

Попробуйте это.

+0

спасибо. Еще один вопрос: какой лучший способ организовать действия? Я обнаружил, что в разных контроллерах слишком много подобных методов, особенно если у меня есть несколько таблиц и я использую Core Data, будет много похожего кода. Любое предложение? – zsong

+0

Хммм ... Я не уверен, что вы имеете в виду, но создайте базовый класс со всеми подобными методами и подклассифицируйте его для добавления различных функций. –

0

Вы должны передать живой экземпляр BController.

Как и в сторону, способ действия должны технически иметь вид:

- (void) actionName:(id) sender;

Просто имя с параметром отправителя может работать, но иногда время выполнения обрывается.

+0

Я не эксперт (поэтому, пожалуйста, поправьте меня здесь), но я подумал, что это необходимо только для Mac OS X? Если они что-то связаны с IBActions, это так, так как без отправителя не работает Mac OS X, но это нормально для iPhone. –

+0

Насколько мне известно. Отправитель очень важен, потому что у вас может быть несколько разных кнопок, которые должны вызывать одно и то же действие или действие может потребовать информации от элемента управления. Это действительно не связано с Interface Builder. Я видел проблемы на iPhone с неправильной формой. – TechZen

+0

Objective-C с привязкой к runtime может быть сложным, если вы к нему не привыкли. Соглашения об именах очень важны для него, в отличие от других языков, например, использование атрибута '- (AttributeType *)Name' для getters и' - (void) setAtributeName: (AttributeType *) aValue; 'для сеттеров. Среда выполнения не имеет способа найти эти методы для вызовов, таких как 'self.attributeName' или' instance.attributeName', за исключением шаблона селектора. – TechZen

 Смежные вопросы

  • Нет связанных вопросов^_^