Вызов метода в UIViewController из UIButton в подпредставлении - PullRequest
5 голосов
/ 25 мая 2011

Все еще изучаете Цель C и правильно понимаете структуру.

У меня есть приложение для iOS с UIViewController, у которого есть определенный метод с именем "doSomething". В моем контроллере представления у меня есть представление и в этом представлении несколько UIButton, которые я создаю программно (см. Пример ниже с одной кнопкой).

enter image description here

Теперь, когда я нажимаю кнопку, я хочу вызвать мой метод "doSomething". То, как я сейчас это делаю, выглядит так:

[myButton addTarget:nil 
             action:@selector(doSomething:)
     forControlEvents:UIControlEventTouchUpInside];

Поскольку моя цель равна нулю, она идет вверх по цепочке респондента, пока не найдет метод с именем "doSomething". Это работает, но на самом деле это не так.

Я начал изучать использование @protocol, но не совсем понял, как это сделать. Я смотрел на некоторые учебники, но для меня это не достаточно ясно. Я использовал такие же протоколы, как для контроллеров табличного представления, но определение одного из них для меня новое.

Можно ли получить пример для этого конкретного случая?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 25 мая 2011

Поскольку ваша цель передается в контроллере представления и метод будет вызван для этого объекта.

Edit:

[myButton addTarget:controller 
             action:@selector(doSomething:)
     forControlEvents:UIControlEventTouchUpInside];

Предполагая, что у вас есть переменная с именем controller, которая является вашим UIViewController. Если у вас нет ссылки на ваш контроллер, просто передайте ее вашему представлению.

Edit2:

Просмотр интерфейса:

@property (assign) UIViewController* controller;

Просмотр реализации:

@synthesize controller;

Контроллер:

- (void) viewDidLoad {
    [super viewDidLoad];
    someView.controller = self;
}
0 голосов
/ 25 мая 2011

Я бы сделал это, установив значение addTarget в self.

[myButton addTarget:self 
             action:@selector(doSomething:)
     forControlEvents:UIControlEventTouchUpInside]

Это будет искать метод doSomething для объекта, в который добавлена ​​цель. В этом случае это будет контроллер представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...