有条件地切换 UIViewController
Posted
技术标签:
【中文标题】有条件地切换 UIViewController【英文标题】:Conditionally Switching a UIViewController 【发布时间】:2014-02-15 20:25:39 【问题描述】:对于我的应用,我需要用户输入一个数字,因此为了防止他们不输入数字,我创建了一个 if/else 语句,如果用户不填写,则会向他们显示错误消息字段,如果他们填写了数字,则移动到应用程序的主视图。唯一的问题是,每当它尝试运行代码以调出下一个屏幕时,我都会崩溃。
- (IBAction)budgetButton:(id)sender
myBudget = [self.budgetTextField.text floatValue];
NSLog(@"myBudget = %.2f", myBudget);
if (myBudget == 0)
self.whatsYourBudgetLabel.text = [NSString stringWithFormat:(@"You must enter a budget!")];
else
ViewController * nextView = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
self.view.window.rootViewController = nextView;
【问题讨论】:
这有点不连贯。 “我需要用户输入一个数字,所以为了防止这种情况发生”你试图阻止你需要发生的事情?请您编辑以更清楚地解释您的问题吗?如果您的应用程序崩溃,请包含任何错误消息。 尝试用[self presentViewController:nextView animated:NO completion:nil];
替换self.view.window.rootViewController = nextView;
【参考方案1】:
您移动到下一个视图的代码搞砸了。
看看performSegueWithIdentifier:sender:
方法。
您不应更改窗口的根目录。将 UINavigationController 放入您的窗口,将您的整个视图层次结构放入其中,并使用默认的 segue 机制进行导航。
【讨论】:
试一试,它仍然会因 SIGABRT 而崩溃。 [self performSegueWithIdentifier:@"View Controller" sender:self]; 你的segue的标识符真的是“视图控制器”吗? 我是编程新手,我才刚学几个月。当我试图学习东西时,我不需要这些令人沮丧的、刻薄的 cmets。 这既不令人沮丧也不刻薄。在您的开篇文章中,标识符的名称是“ViewController”。在您的评论中,它是“视图控制器”。我只是想知道你是否在某个地方打错了。我知道一个是给 segue 的,一个是给 VC 的,但仍然值得确保你没有在某个地方混淆这两个。以上是关于有条件地切换 UIViewController的主要内容,如果未能解决你的问题,请参考以下文章