使用Xcode 4.3.1,适用于iOS 5.1的ipad应用程序,无核心数据
在我的故事板上,我有一个主要细节项目。主人显然有一个TableView,并且工作正常:通过在主表视图中选择一个项目,我的详细数据通过模板代码调用setDetailItem(我从'didSelectRowAtIndexPath'调用)在详细视图控制器中设置。这很好。
我的DetailView / Scene包含(另一个)UITableView(以及其他一些TextFields等) 此UITAbleView的数据源和委托连接到详细视图控制器。 在详细视图控制器的接口文件中,我添加了协议UITableViewDataSource和UITableViewDelegate(在预先配置的UISplitViewControllerDelegate旁边)。
我在详细视图控制器中实现了方法numberOfSectionsInTableView,numberOfRowsInSection,cellForRowAtIndexPath,didSelectRowAtIndexPath方法。
但是,这些仅在构建主表视图列表时调用,而不是在我在主列表/ tableview中选择项目时调用。当我在主列表/ tableview中选择一个项时,详细数据get在set viewcontroller中设置,但是例如,从不调用detail控制器中的'cellForRowAtIndexPath',并且不更新/初始化详细TableView。 (然而,详细视图中的文本字段加载了正确的数据)。
我想我错过了一些东西。在准备好数据时,我是否必须给桌面看一眼?如果是这样,怎么......? tableview本身没有连接到插座或动作,是吗?
谢谢!
答案 0 :(得分:0)
您需要实现从RootView到Detailview的自定义委托(一对一通信)。 如下, 在RootView中实现Delegate,
@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];
}
}
在创建splitview控制器时,不要忘记将Rootview中的委托设置为detailview。
并且还在Detailview中捕获委托并重新加载TableView,并加载足够的数据。
感谢,
Naveen Shan