在我的 SplitView 应用程序中,我在启动时在 TableView 中有一些常规数据。选择TableView中的数据时,我想首先在其中选择某些东西时显示详细数据,它也应该在DetailView中显示。我的问题涉及第二步:我应该如何更新 TableView 的数据并避免在选择某些内容时这个 TableView 消失?
问问题
179 次
1 回答
0
如果您从 Apple 提供的 MasterDetail 应用程序开始,默认情况下它会执行以下操作
- 创建一个拆分视图控制器。
- 在左侧它有一个 UINavigationController
- 在右侧它有 DetailViewController
- 在 AppDelegate 中,它有一个 UINavigationController,其根控制器为 MasterViewController。(这就是您在左侧看到 MasterViewController 的原因)。
- 默认情况下,左侧的 MasterViewController 与导航控制器无关。看起来这是您希望能够进一步向下钻取并获得另一个向下钻取视图的地方,依此类推。
您需要采取的步骤
首先创建另一个 DrillDownLevel1ViewController,它是 UITableViewController 的子类。
在该类中,有两个属性,一个用于数据,一个用于引用 DetailViewController。
@property(strong,nonatomic)NSArray *drillDownLevel1Data; @property(strong,nonatomic)DetailViewController *detailViewController;
在 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];
在 DrillDownLevel1ViewController 中,可以正确设置 numberOfSections、numberOfRows 等
在 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;
在 DrillDownLevel1ViewController 的 didSelectRowAtIndexPath 中
self.detailViewController.detailItem = [drillDownLevel1Data objectAtIndex:indexPath.row]; [self.detailViewController configureView];
右侧的 DetailViewController 现在应该向您显示数据。如果不是,那么您可以对插座是否连接等进行一些调试。
我有一个我建立的简单项目,如果你愿意,我可以通过电子邮件发送给你。
于 2012-12-08T12:44:13.473 回答