【问题标题】:UITableView on DetailView of SplitView doesn't load it's dataSplitView DetailView 上的 UITableView 不加载它的数据
【发布时间】:2012-03-21 18:47:43
【问题描述】:

使用 Xcode 4.3.1,适用于 iOS 5.1 的 ipad 应用,无核心数据

在我的故事板上,我有一个主从项目。 master 显然有一个 TableView,并且工作正常:通过在主 tableview 中选择一个项目,我的详细数据由模板代码调用 setDetailItem(我从“didSelectRowAtIndexPath”调用)在详细视图控制器中设置。效果很好。

我的 DetailView/Scene 包含(另一个)UITableView(其中还有一些 TextFields 等) 此 UITableView 的数据源和委托连接到详细视图控制器。 在详细视图控制器的接口文件中,我添加了协议 UITableViewDataSource 和 UITableViewDelegate(在预配置的 UISplitViewControllerDelegate 旁边)。

我在细节视图控制器中实现了 numberOfSectionsInTableView、numberOfRowsInSection、cellForRowAtIndexPath、didSelectRowAtIndexPath 方法。

但是,这些仅在主 tableview 的列表建立时调用,而不是当我在主列表/tableview 中选择一个项目时调用。当我在主列表/表视图中选择一个项目时,详细数据会在详细视图控制器中设置,但例如从不调用详细控制器中的“cellForRowAtIndexPath”,并且详细表视图不会更新/初始化。 (但是,详细视图中的文本字段加载了正确的数据)。

我想我错过了一些东西。我是否必须在准备数据时给表格视图一个刺激?如果是这样,如何...? tableview 本身没有连接到插座或操作,应该吗?

谢谢!

【问题讨论】:

    标签: objective-c uitableview ios5 uisplitviewcontroller


    【解决方案1】:

    您需要实现从 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。

    谢谢,

    纳文山

    【讨论】:

      猜你喜欢
      • 2016-01-27
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      相关资源
      最近更新 更多