繁体   English   中英

如何切换回主视图,即ViewController.h“ MainStoryboard.storyboard的笔尖名称是什么?

[英]How to switch back to the Main view i.e ViewController.h" what is the nib name for MainStoryboard.storyboard?

我使用以下代码从主视图( ViewController.h )切换到另一个视图( TouchViewController ),然后类似地从该视图切换到下一个视图( QuestionsViewController )。
我如何从这里返回主视图? MainStoryboard.storyboard initWithNibName的值是什么?

- (IBAction)startGame:(UIButton *)sender {

    TouchViewController *second = [[TouchViewController alloc] initWithNibName:@"TouchViewController" bundle:nil];

    [self presentViewController:second animated:YES completion:nil];
}

- (IBAction)selectTopic:(UIButton *)sender {
    NSString *category = [[sender titleLabel] text];
    [[NSUserDefaults standardUserDefaults] setObject:category forKey:@"MyKey"];
    QuestionsViewController *second = [[QuestionsViewController alloc] initWithNibName:@"QuestionsViewController" bundle:nil];
    [self presentViewController:second animated:YES completion:nil];
}

现在回到主视图,我有一个问题,即

- (IBAction)backtoMainMenu:(id)sender {
    ViewController *second = [[ViewController alloc]initWithNibName:@"MainStoryboard.storyboard" bundle:nil];
    [self presentViewController:second animated:YES completion:nil];
}

此时,应用程序崩溃了! 我想这是因为不能使用initWithNibName:@"MainStoryboard.storyboard"但是ViewController没有任何其他xib文件-那我该怎么办?

首先, storyboard提要不能用作xib文件,因为它们不是一回事。 其次,您有一个视图控制器,该视图控制器提供了一个视图控制器,该视图控制器还提供了一个视图控制器,因此您可以从第三个视图控制器中执行以下操作:

[self.presentingViewController.presentingViewController 
            void)dismissViewControllerAnimated:YES completion:nil];

这是最快的方法,但是它并不是真正可重用的,如果您的视图控制器层次结构复杂得多,而不是像这样那样丑陋,其他解决方案可以是委托或通知。

这只是一条建议,通常,当您想返回上一个屏幕时,您并不需要创建新的视图控制器(在尝试使用backToMainMenu方法时,您只想删除所有视图控制器(屏幕)直到您到达所需的屏幕。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM