Делегаты XCode / IOS - PullRequest
       4

Делегаты XCode / IOS

2 голосов
/ 09 января 2011

Если у меня есть контроллер представления, который реализует два протокола:

@interface CustomerOperationsViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate>

Есть ли простой способ создать требуемые обратные вызовы для протоколов?Может быть, ярлык XCode для методов реализации?Я собираюсь к документации каждый раз для этого.

Связано, возможно ли поместить делегата в файл, отличный от владельца файла?Я не вижу, как перетащить элемент пользовательского интерфейса в класс, отличный от владельца файла .....

Ответы [ 2 ]

4 голосов
/ 29 апреля 2011

Просто нажмите Command-Click на методе делегата, и он покажет вам заголовок делегата, поэтому вам не нужно просматривать Интернет (например, сайт разработчика Apple) для получения соответствующих документов.Кроме того, в моих файлах реализации я обычно пишу такой код всякий раз, когда внедряю делегата:

#pragma mark - UITableViewDelegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    // implementation here ...
}

#pragma mark - UITableVieWDataSource

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // implementation here ...
}

Путем нажатия клавиши мыши на тексте прагмы (UITableViewDelegate / UITableViewDataSource) также будет показан заголовок делегатаменьше навигации к заголовочному файлу текущего класса для Command-Click по протоколу.Просто скопируйте и вставьте нужные методы из заголовка делегата.

Наконец, также полезно начать вводить в Xcode (любой файл реализации, соответствующий протоколу, который вы хотите автозаполнить) ...

- tableView 

и нажмите клавишу выхода.Появятся методы делегата tableView, и вы можете выбрать тот, который вы хотите, с помощью вкладки, он будет автоматически завершен.То же самое верно для делегатов других объектов.

Example

3 голосов
/ 09 января 2011

Добро пожаловать в XCode, одну из самых разочаровывающих IDE.Не существует особенно простого способа предварительно заполнить обратные вызовы, хотя они должны быть реализованы в CodeSense.Вы можете скопировать / вставить из заголовочных файлов, но вам все равно придется вручную редактировать некоторые вещи.

Что касается вашего второго вопроса: да - ваш делегат не обязан быть владельцем файла, но обычно, если вы устанавливаете его на что-то другое, вы делаете это программно, а не через IB.Где / что вы хотели, чтобы ваш делегат был?Другой вид контроллера или что-то другое?

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