UITableView на DetailView SplitView не загружает свои данные - PullRequest
0 голосов
/ 21 марта 2012

Использование Xcode 4.3.1, приложение ipad для iOS 5.1, без данных ядра

На моей раскадровке у меня есть мастер-проект. У мастера, очевидно, есть TableView, и это прекрасно работает: при выборе элемента в главном табличном представлении мои подробные данные устанавливаются в контроллере подробного представления с помощью вызова кода шаблона setDetailItem (который я вызываю из didSelectRowAtIndexPath). Это отлично работает.

Мой DetailView / Scene содержит (другой) UITableView (среди прочего, также некоторые TextFields и т. Д.) Источник данных и делегат этого UITAbleView подключены к контроллеру подробного представления. В файле интерфейса детального viewcontroller я добавляю протоколы UITableViewDataSource и UITableViewDelegate (рядом с предварительно настроенным UISplitViewControllerDelegate).

Я реализовал методы numberOfSectionsInTableView, numberOfRowsInSection, cellForRowAtIndexPath, didSelectRowAtIndexPath в контроллере подробного представления.

Тем не менее, они вызываются только тогда, когда создается список главного просмотра таблицы, а не когда я выбираю элемент в основном списке / просмотре таблицы. Когда я выбираю элемент в основном списке / табличном представлении, подробные данные получают в подробном контроллере представления, но, например, «cellForRowAtIndexPath» в подробном контроллере никогда не вызывается, а подробный табличный просмотр не обновляется / не инициализируется. (Однако текстовое поле в подробном представлении загружается с правильными данными).

Думаю, я что-то упустил. Должен ли я дать пюду в тот момент, когда я подготовил его данные? И если так, как ...? Само представление таблицы не связано с розеткой или действием, не так ли?

Спасибо!

1 Ответ

0 голосов
/ 22 марта 2012

Вам необходимо реализовать пользовательский делегат (непосредственное общение) из RootView в Detailview.Подобно следующему: реализовать делегат в RootView,

@protocol RootViewControllerDelegate <NSObject>

-(void)didchangeSelectionInRootViewList:(id)toItem;

@end

и вызывать делегат при необходимости как (в вашем случае для табличного представления didSelectRowAtIndexPath),

//a delegete need in caes of splitview to refresh the detailview.
-(void)callDelegate:(id)sender  {
    if(self.delegate && [self.delegate respondsToSelector:@selector(didchangeSelectionInRootViewList:)])    {
        [self.delegate didchangeSelectionInRootViewList:sender];
    }
}

и не забыватьустановить делегата в Rootview как подробный вид при создании контроллера splitview.

А также перехватить делегат в Detailview и перезагрузить TableView с достаточным количеством данных для загрузки.

спасибо,

Навин Шан

...