Разработка приложений для iPhone - UITableView DetailsView - PullRequest
1 голос
/ 05 мая 2010

У меня есть UITableView со списком элементов, таких как item1, item2, item3, item4 и т. Д.

Если я выберу элемент item1, он перейдет в подробный вид item1 (который управляется DetailsViewController).

Я пытаюсь добавить кнопку «Далее» в DetailsView. При щелчке DetailsView обновится и покажет item2. При повторном нажатии отобразится item3 и т. Д.

Я искал все, что нужно для реализации. Но безрезультатно.

Заранее большое спасибо !!!

1 Ответ

2 голосов
/ 05 мая 2010

Я бы сделал контроллер табличного представления делегатом контроллера подробного представления. Затем сделайте что-то вроде этого в контроллере подробного представления:

-(IBAction) nextButtonClicked:(id)inSender {
  NSDictionary *data = [delegate detailView:self nextDetailsForCurrent:myDetails];
  if ( data ) [self setDetails:data];
}

Вы можете создать гораздо более надежный протокол делегирования, чем этот упрощенный метод, но, надеюсь, это поможет вам начать работу.

Edit:

В делегате нет ничего особенного. Это только один объект, который принимает решения от имени другого объекта. В Objective-C делегат обычно определяется как протокол, хотя раньше он был просто категорией NSObject.

Создайте протокол делегирования следующим образом:

@protocol DetailDelegate <NSObject>
  -(NSDictionary *) detailController:(DetailController *)sender nextDetailsForCurrent:(NSDictionary *)current;
@end

Дайте контроллеру подробного вида свойство, подобное этому:

@property (nonatomic,assign) id<DetailDelegate> delegate;

Обратите внимание на assign вместо retain. По соглашению, делегат не сохраняется, даже если он должен оставаться действительным в течение жизни другого объекта. Форма id просто означает, что объект соответствует протоколу.

Когда контроллер табличного представления создает контроллер подробного представления, он устанавливает себя в качестве делегата.

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