如何在方法中更改detailViewController

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在方法中更改detailViewController相关的知识,希望对你有一定的参考价值。

我有一个观点,它正在做很多功能,当我到达我完成的点时,我想改为newViewcontroller。如果我从rootview中执行此操作,我只需要调用。

NewPageViewController *newDetailViewController = [[NewPageViewController alloc] initWithNibName:@"NewPageViewController" bundle:nil];
detailViewController = newDetailViewController;

但我需要从我的旧细节(右侧)做到这一点

我正在从右侧下载splitview iPad应用程序中的文件,在下载文件后,我需要在我的方法中将splitview的右侧更改为新的nib文件,以便我可以打开并编辑该文件

有人能以正确的方式指出我。

我现在有 :

-(void)changeView { 

    ListController *newDetailViewController = [[ListController alloc] initWithNibName:@"ListController"bundle:nil]

    NSArray *viewControllers = [NSArray arrayWithObjects:[splitViewController.viewControllers objectAtIndex:0], newDetailViewController, nil];

    splitViewController.viewControllers = viewControllers;
    [viewControllers release];

}

-(void)downloadfile {
 //I do all my work and get the file.
NSLog(@"I need to change views now.");


                [self changeView];

}

我没有得到任何错误,但右侧视图没有改变。

答案

NSArray *viewControllers上有一个UISplitViewController财产。此数组中的第一项是主VC,第二项是详细VC。将此属性重新分配给包含相同主VC但新细节VC的新阵列:

// don't forget to set the delegate of myNewDetailViewController appropriately!
myNewDetailViewController.delegate = ...

NSArray newVCs = [NSArray arrayWithObjects:[uiSplitVC.viewControllers objectAtIndex:0], myNewDetailViewController, nil];

uiSplitVC.viewControllers = newVCs;

UISplitViewController的API参考:http://developer.apple.com/library/ios/#documentation/uikit/reference/UISplitViewController_class/Reference/Reference.html

N.B:不要尝试更换主VC - 它通常会以某种方式出错。 I tried many many ways取代了主人,它总是以一种非常讨厌的方式出错。替换细节VC虽然很好!

另一答案

ios8开始,您可以在UISplitViewController上使用-showDetailViewController:sender:方法。见Apple docs on UISplitViewController

另一答案

正如@chris所提到的,您可以使用UISplitViewController的Delegate for iOS 8及更高版本,这是最好的方法。

 -(void)showDetailViewController:(UIViewController *)vc sender:(nullable id)sender NS_AVAILABLE_IOS(8_0);

以上是关于如何在方法中更改detailViewController的主要内容,如果未能解决你的问题,请参考以下文章

在 RootViewController 中单击按钮更改 DetailViewController

iOS拆分视图控制器-在detailViewController中更改图像

更新 UISplitViewController 子类中 DetailViewController 的框架

在 DetailViewController ToolBar for iPad 上添加工具栏项或按钮

使用 UISearchBar 后打开一个 detailViewController

动态更改详细视图控制器