Индекс TableView от корневого контроллера до подробного контроллера (UINavigationController) - PullRequest
0 голосов
/ 29 июля 2011

Мое корневое представление - это сгруппированное табличное представление. Когда пользователь выбирает строку, я хочу иметь возможность сохранить, какая строка была выбрана, чтобы предоставить ее контроллеру деталей для загрузки правильных данных.

Вся навигация работает нормально, я просто не хочу создавать глобальную переменную, чтобы просто сохранить индекс. Есть ли встроенный метод для navcontroller или что-то?

Ответы [ 2 ]

1 голос
/ 29 июля 2011

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

@property(nonatomic, readonly) UIViewController *parentViewController

Я предпочитаю первый вариант - вы можете написать собственный метод init..., чтобы предоставлять данные для контроллера подробного просмотра при его создании.

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

Это полезная цитата из Руководства по программированию контроллера представления для iOS :

За исключением контроллеров представления, управляющих конечными данными, каждый настраиваемый контроллер представления долженпредоставить пользователю возможность перейти на следующий уровень иерархии данных.Контроллер представления, который отображает список элементов, может использовать метки в данной ячейке таблицы для отображения следующего уровня данных.Например, когда пользователь выбирает фотоальбом из списка верхнего уровня, приложение «Фотографии» создает новый контроллер представления фотоальбома.Новый контроллер представления инициализирован достаточным количеством информации об альбоме, чтобы представить соответствующие фотографии.

0 голосов
/ 01 августа 2011

Я хотел узнать, как я закончил кодировать это.Я все еще немного новичок в Obj-C, поэтому некоторые концепции, с которыми я не сталкивался или не сталкивался, поэтому, если это старая знакомая, извините.

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

ParentController.h

NSDictionary *myData;


ChildController.h

NSDictionary *childData;


// This would get called in the parent controller where appropriate
// but before the child controller is presented
ChildController.childData = myData;

Это очевидно очень урезано, но идея работает.Просто возьмите свои данные и передайте их свойству, прежде чем вызывать их, и они будут там, как только появится дочернее представление.Надеюсь, это поможет.

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