2012-10-21 25 views
0

我端起我的应用程序从iOS3.2到iOS6的失败对iOS6的。在iPad上,我使用SplitViewController。在RootViewController的BTN点击更改DetailViewController在iPad的纵向

在RootViewController的,我有一个表视图。如果用户在表格视图中单击一行,我将更改DetailViewController。

这样的代码:

- (void)setDetailViewAuthorPage { 

UISplitViewController *splitViewController = 
(UISplitViewController *)self.parentViewController.parentViewController; 

UIViewController *detail = 
[splitViewController.viewControllers objectAtIndex:1]; 

DetailViewControllerAuthorPageiPad <SubstitutableDetailViewController> 
*detailViewController = 
[[DetailViewControllerAuthorPageiPad alloc] 
initWithNibName:@"DetailViewControllerAuthorPageiPad" 
bundle:nil]; 

NSArray *viewControllers = 
[[NSArray alloc] 
initWithObjects:self.navigationController, 
detailViewController, 
nil]; 

splitViewController.viewControllers = viewControllers; 

[detailViewController viewWillAppear:YES]; 

[viewControllers release]; 

// Dismiss the popover if it's present. 
if (popoverController != nil) { 
    [popoverController dismissPopoverAnimated:YES]; 
} 

[detailViewController 
showRootPopoverButtonItem:self.rootPopoverButtonItem 
root:self]; 

在横向,此代码工作正常。

在纵向,则DetailViewController没有改变。该行被选中并且上面的代码正在运行,但无法看到DetailViewController更改。 (我使用Xcode 4.5)

你的帮助是非常感谢!

谢谢。

回答

0

我看到你可能想看的几件事:1)为什么不使用didSelectRowAtIndexPath而不是这个自定义方法? 2)您似乎在呼唤你的viewControllers释放... ARC消除了释放的需要。 3)在第一行你有“self.parentViewController.parentViewController”??? 4)你正在使用init的init ...为什么不使用storyboard和segues? 我带来的一些这些,因为我完成了同类型的项目......移动最初写给IOS3到iOS6的应用程序。我实际上不得不重写整个应用程序,因为它已经发生了很大变化。

相关问题