我创建了故事板,我想在另一个视图或childView上打开,这样当我关闭或销毁故事板的这个视图时,故事板打开的早期视图保持不变。
当我运行以下代码时: -
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main_iPad" bundle:nil];
ViewController *detailViewController = [storyboard instantiateViewControllerWithIdentifier:@"neolick"];
[[UIApplication sharedApplication].keyWindow setRootViewController:detailViewController];
首先,故事板打开,但我不知道它是否在上一个视图的顶部打开,或者它是否会破坏之前的视图&然后打开。 其次,故事板上所需的功能会自动运行,这正是我想要的,但这些功能是如何工作的。
如果有人可以帮助我理解上述代码及其工作原理。
注意:由于某种原因,我无法在同一状态再次调用早期视图。
先谢谢!!
答案 0 :(得分:1)
在这里设置根视图控制器
它不会保留你的后屏幕,因为它是你想要的
如果您想保留当前屏幕并在其上显示其他屏幕
你有两种方法
1)呈现ViewController 2)推送视图控制器
1)呈现ViewController
为此,您可以在其他可见的屏幕上显示您的屏幕
例如
- (IBAction)btnNextTapped:(id)sender {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main_iPad" bundle:nil];
ViewController *detailViewController = [storyboard instantiateViewControllerWithIdentifier:@"neolick"];
[self presentViewController:detailViewController animated:true completion:nil]
}
2)推送视图控制器
为此,您需要NavigationController
,并且需要从当前可见屏幕推送ViewController
即
[self.navigationController pushViewController:vc animated:true];
修改强>
根据讨论,你需要找到当前的顶视图控制器然后你应该呈现它
在方法
下添加此方法- (UIViewController*) topMostController
{
UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
while (topController.presentedViewController) {
topController = topController.presentedViewController;
}
return topController;
}
并将此方法替换为代码
- (void)goToNewPage:(CDVInvokedUrlCommand*)command
{
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main_iPad" bundle:nil];
ViewController *detailViewController = [storyboard instantiateViewControllerWithIdentifier:@"neolick"];
[[self topMostController] presentViewController:detailViewController animated:true completion:nil];
}