Iphone 如何在方法中更改detailViewController
我有一个正在执行许多功能的视图,当我完成时,我想更改为Iphone 如何在方法中更改detailViewController,iphone,xcode,ipad,view,Iphone,Xcode,Ipad,View,我有一个正在执行许多功能的视图,当我完成时,我想更改为newViewcontroller。如果我从rootview中找到了执行此操作的位置,我只需打电话 NewPageViewController *newDetailViewController = [[NewPageViewController alloc] initWithNibName:@"NewPageViewController" bundle:nil]; detailViewController = newDetailViewCon
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];
}
我没有收到任何错误,但右侧视图没有更改。在
UISplitViewController
类上有一个NSArray*viewControllers
属性。此数组中的第一项是主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参考:
注意:不要尝试更换主VC——它通常会以某种方式出现可怕的错误。在更换主机的过程中,它总是以一些非常恼人的方式出错。更换细节VC是好的,虽然 从iOS8开始,您可以在UISplitViewController上使用
-showDetailViewController:sender:
方法。请参阅@chris提到的。,您可以使用iOS 8及以上版本的UISplitViewController的委托,这是最好的方法
-(void)showDetailViewController:(UIViewController *)vc sender:(nullable id)sender NS_AVAILABLE_IOS(8_0);
嘿,克里斯,你的问题不是很清楚。你到底想做什么?如果你能更好地解释它,那么我可以相应地帮助你。:)您确定您的RHS视图没有更改吗?是不是它正在改变,但看起来与已经存在的视图没有什么不同?顺便说一句,你正在主线程上调用downloadfile吗?(你应该是)。下载文件肯定会被调用吗?您的NSLog会得到输出,对吗?另外,输入一个NSLog来检查splitViewController是否为空-您可能没有从Interface Builder连接IBOutlet?好的,它看起来为空。断言失败:(splitViewController.viewControllers!=nil),函数-[ListController changeView],那么您是否连接了UISplitViewController?听起来你好像忘了。这解决了你的问题吗?我补充了我现在仍然有一个问题。