未使用segue替换master拆分设置SplitView委托

时间:2012-07-14 20:17:14

标签: objective-c ipad ios5 uisplitviewcontroller

我的问题是iOS SDK5.1中基于UISplitView的应用程序。

  • 该应用是基于splitview的。
  • 在说明应用程序时,一切正常,而使用了根主视图和详细视图。
  • 稍后,我使用segue类型:“替换主分割”
  • 来查看主视图和详细视图

问题出现在这里:

  • 如果上述所有情况都发生在纵向模式下,则不显示显示主视图的条形按钮。
  • 转向横向模式并返回解决问题。

masterVC在splitview.delegate中将自己设置为-(void)viewDidLoad,我怀疑为时已晚,因此无法及时调用委托方法。

所以我尝试在-(void)prepareForSegue ...中设置委托,这不会改变行为。

1 个答案:

答案 0 :(得分:0)

在App Delegate的didFinishLaunchingWithOptions方法中设置UISplitViewController委托。

if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {

    UISplitViewController *splitViewController = (UISplitViewController*)self.window.rootViewController;
 UITableViewController *yourViewController = (UITableViewController*)[splitViewController.viewControllers objectAtIndex:0];
splitViewController.delegate = yourViewController;

 }

确保yourViewController符合UISplitViewControllerDelegate协议。

编辑:此外,如果您的MasterViewController嵌入在导航控制器中,您将不得不先访问UINavigationController然后访问它的topViewController来访问它。