更新SplitView的TableView(RootView)

时间:2012-12-08 10:27:17

标签: objective-c ios uitableview uisplitviewcontroller

在我的SplitView应用程序中,我在启动时在TableView中有一些常规数据。当选择TableView中的数据时,我想首先在TableView中显示详细数据,当在那里选择某些内容时,它也应该显示在DetailView中。我的问题涉及第二步:如何更新TableView的数据并避免在选择某些内容时此TableView消失?

1 个答案:

答案 0 :(得分:0)

如果您从Apple提供的MasterDetail应用程序开始,默认情况下会执行以下操作

  1. 创建拆分视图控制器。
  2. 在左侧,它有一个UINavigationController
  3. 在右侧,它有DetailViewController
  4. 在AppDelegate中它有一个UINavigationController,其rootcontroller为MasterViewController。 (这就是你看到MasterViewController的原因)在左边。
  5. 默认情况下,左侧的MasterViewController与导航控制器无关。看起来这是您希望能够进一步向下钻取并获得另一个向下钻取视图等的位置。
  6. 您需要采取的步骤

    1. 首先创建另一个DrillDownLevel1ViewController,它是UITableViewController的子类。

    2. 在该类中,有两个属性,一个用于数据,一个用于引用DetailViewController。

      @property(strong,nonatomic)NSArray *drillDownLevel1Data;
      @property(strong,nonatomic)DetailViewController *detailViewController;
      
    3. 在MasterViewController的didSelectRowAtIndexPath中做了这样的事情

       DrillDownLevel1ViewController *drillDownLevel1ViewController = [[DrillDownLevel1ViewController alloc] init];
       drillDownLevel1ViewController.drillDownLevel1Data=[NSArray arrayWithObjects:@"One",@"Two",@"Three", nil];
       drillDownLevel1ViewController.detailViewController=self.detailViewController;
      
       [self.navigationController pushViewController:drillDownLevel1ViewController animated:YES];
      
    4. 在DrillDownLevel1ViewController中,您可以正确设置numberOfSections,numberOfRows等

    5. 在DrillDownLevel1ViewController的cellForRowAtIndexPath中,设置正确的值

          static NSString *CellIdentifier = @"Cell";
          UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
          if(cell==nil){
              cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
          }
      
      
          cell.textLabel.text=[drillDownLevel1Data objectAtIndex:indexPath.row];
      
          return cell;
      
    6. 在DrillDownLevel1ViewController的didSelectRowAtIndexPath中

      self.detailViewController.detailItem = [drillDownLevel1Data objectAtIndex:indexPath.row];
      [self.detailViewController configureView];
      
    7. 右侧的DetailViewController应该现在显示数据。如果不是,那么你可以做一些关于插座是否连接等的调试。

    8. 我有一个我建立的简单项目,如果你想我可以通过电子邮件发送给你。