UISplitView在详细信息窗格中显示不同的视图

时间:2010-05-13 06:17:14

标签: ipad

如何更改UISplitView的“详细信息”窗格中的视图,使其视图完全不同?

我很难理解它的所有连接方式以及目前应该采取的措施,有人可以赐教我吗?

我希望能够做的是根据用户在左窗格的UITableView中选择的内容显示特定视图(此视图可以是图像,也可以是新闻文章的更复杂视图,等等......许多不同的选项)然后,当用户将iPad变为纵向视图时,详细信息窗格中的该视图将更改为其等效的纵向视图版本。

这有意义吗?

我到底怎么做?

只是为了头脑风暴,这就是我的想法:

  • 创建拆分视图项目

为每个视图创建2个NIB :(附带视图控制器???)

  • PortraitNewsStory
  • LandscapeNewsStory
  • PortraitImageBrowser
  • LandscapeImageBrowser
  • 等...

  • 使用XCode创建UISplitView控件

  • 当用户旋转iPad时捕获(应该在RootViewController.m中完成吗?)

  • 更改view的{​​{1}}我应该怎么做?

  • 利润???

由于 标记

2 个答案:

答案 0 :(得分:1)

您可以按程序创建拆分视图,并在UISplit视图的viewcontroller数组中添加视图控制器。 因此,可以在拆分视图中更改视图控制器。

self.splitViewController =[[UISplitViewController alloc]init];
    self.rootViewController=[[RootViewController alloc]init];
    self.detailViewController=[[FirstDetailViewController alloc]init];


UINavigationController *rootNav=[[UINavigationController alloc]initWithRootViewController:rootViewController];
UINavigationController *detailNav=[[UINavigationController alloc]initWithRootViewController:detailViewController];

self.splitViewController.viewControllers=[NSArray arrayWithObjects:rootNav,detailNav,nil];
self.splitViewController.delegate=self.detailViewController;

并更改视图控制器 你必须将setControllers设置为UISplitView

您可以在此处查看示例http://kshitizghimire.com.np/uisplitviewcontroller-multipledetailviews-with-navigation-controller/

答案 1 :(得分:0)

  

更改视图   DetailViewController我该怎么办   此?

在Simple中,您可以使用相应的nib文件创建另一个UIViewController(ex,名为MyCostomViewController)。然后在rootViewController

下的方法内执行以下操作
- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    /*
     When a row is selected, set the detail view controller's detail item to the item associated with the selected row.
     */
    //detailViewController.detailItem = [NSString stringWithFormat:@"Row %d", indexPath.row];
    MyCostomViewController *cus = [[MyCostomViewController alloc] initWithNibName:@"MyCostomViewController" bundle:nil];
    [detailViewController.view addSubview:cus.view];

}