我正在尝试根据用户在UIAlertView
中的选择来更改视图控制器。我是目标c的新手,我遇到了一些麻烦。
当用户按下“我已完成”时,我希望应用程序导航回上一个视图控制器。当用户按下“记分板”时,我希望应用程序导航到下一个视图控制器。
UIAlertView *jigsawCompleteAlert = [[UIAlertView alloc] //show alert box with option to play or exit
initWithTitle: @"Congratulations!"
message:completedMessage
delegate:self
cancelButtonTitle:@"I'm done"
otherButtonTitles:@"Play again", @"Scoreboard",nil];
[jigsawCompleteAlert show];
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
if (buttonIndex == 0) {
NSLog(@"Cancel Tapped.");
[self.navigationController popViewControllerAnimated:YES];
}
else if (buttonIndex == 1) {
NSLog(@"GO tapped.");
startDate = [NSDate date];
// Create the stop watch timer that fires every 10 ms
stopWatchTimer = [NSTimer
scheduledTimerWithTimeInterval:1.0/10.0
target:self
selector:@selector(updateTimer)
userInfo:nil
repeats:YES];
} else if (buttonIndex == 2) {
NSLog(@"Scoreboard tapped.");
}
}
popView部分正在运行,应用程序导航回一个视图控制器。我不知道如何让应用程序向前移动一个视图控制器。我知道这与pushViewController
有关,但我只看到了相当古老而矛盾的文章,详细说明了如何做到这一点。
感谢您的帮助,谢谢。
答案 0 :(得分:6)
您需要创建新的UIViewController,然后将其推送到堆栈,如下所示:
else if (buttonIndex == 2) {
NSLog(@"Scoreboard tapped.");
MoreDetailViewController *ctrl = [[MoreDetailViewController alloc] initWithNibName:@"MoreDetailViewController" bundle:nil];
[self.navigationController pushViewController:ctrl animated:YES];
}
如果您正在使用StoryBoard,则在storyboard文件(Attribute Inspector)中为您的UIViewController提供标识符。
将此代码放入处理程序:
MoreDetailViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"MoreDetailViewController"];
[self.navigationController pushViewController:vc animated:YES];
答案 1 :(得分:2)
只需拨打以下电话:
[self.navigationController pushViewController:viewControllerToPush animated:YES];
如果您没有设置视图控制器,则需要以编程方式创建一个或使用头文件中的IBOutlet通过Interface Builder链接一个。