UISplitViewController推送iPad的多个细节视图?

时间:2012-05-26 04:40:46

标签: ipad uisplitviewcontroller detailview

我需要在splitView上的detailViewController上加载多个viewControllers。 somethingLike enter image description here

当闹钟开启时,我可以在detailView上推送相关的视图控制器。左侧视图是一个uitableview。

我的代码在AppDelegate.m

#import "splitDetailViewController.h"
#import "splitTableViewController.h"

  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  {
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.

  splitTable=[[splitTableViewController alloc]initWithStyle:UITableViewStyleGrouped];
  UINavigationController *splitTableNav=[[UINavigationController alloc]initWithRootViewController:splitTable];

  splitDetails=[[splitDetailViewController alloc]initWithNibName:nil bundle:nil];
  UINavigationController *splitDetailNav=[[UINavigationController alloc]initWithRootViewController:splitDetails];


  self.splitViewController.delegate=splitDetails;

  splitViewController=[[UISplitViewController alloc]init];

  splitViewController.viewControllers=[NSArray arrayWithObjects:splitTableNav,splitDetailNav, nil];





  [self.window addSubview:splitViewController.view];
  self.window.backgroundColor = [UIColor whiteColor];
  [self.window makeKeyAndVisible];
  return YES;
  }
抱歉,这是我第一次开发iPad应用程序,对于如何使用splitview有点困惑。我将如何在详细信息视图上调用多个viewControllers。对于计时器,警报,共享,每个都有不同的视图控制器。

希望我会得到一些帮助!

3 个答案:

答案 0 :(得分:4)

我正在寻找类似问题的解决方案。在我的情况下,我希望tableview链接到多个详细视图,具体取决于选择。我可以在一个viewcontroller上覆盖数据但是正在寻求更好的解决方案。这就是我做的。它比我迄今为止发现的一些复杂和过时的选项更简单,效果更好。

我只是在身份检查器中将一个故事板ID提供给我想要显示在detailview(“second”)中的viewcontroller,并在didSelectRowAtIndexPath上添加:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    TimeDetailViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"second"];

    [[self.splitViewController.viewControllers objectAtIndex:1] pushViewController:detail animated:YES];
 }

因此,当有人按下主视图中的单元格时,会推送详细视图。

一个简单的if语句可以切换显示的视图:

if ([[self.selfRootMenuArray objectAtIndex:indexPath.row] isEqual: @"Second Choice"]) {
    TimeDetailViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"second"];

    [[self.splitViewController.viewControllers objectAtIndex:1] pushViewController:detail animated:YES];
 } else if ([[self.selfRootMenuArray objectAtIndex:indexPath.row] isEqual: @"First Choice"]) {
     TimeDetailViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"first"];

     [[self.splitViewController.viewControllers objectAtIndex:1] pushViewController:detail animated:YES];
 };

您可以简单地使用按钮,开关或其他任何内容而不是表格视图,但重点是通过在“身份检查器”中添加“故事板ID”

并简单地通过引用“Storyboard ID”来实例化视图控制器,然后将其推送到索引1(详细信息侧)的拆分视图控制器,其简单快速

TimeDetailViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"second"];

[[self.splitViewController.viewControllers objectAtIndex:1] pushViewController:detail animated:YES];

希望有所帮助

答案 1 :(得分:1)

好吧,我自己找到了一个解决方案,它运行良好

http://kshitizghimire.com.np/uisplitviewcontroller-multipledetailviews-with-navigation-controller/

三江源

答案 2 :(得分:1)

这是我的解决方案,希望它有所帮助:https://github.com/selfdealloc/MultipleDetailViewsUsingStoryboards