如何在UIKit应用中使用Navigation Controller实现测验内容切换?
实现步骤
1. 确认当前控制器已嵌入导航控制器
先确保你的Question View Controller已经被UINavigationController包裹。如果还没设置,在Storyboard里选中该控制器,点击Xcode顶部菜单的「Editor」→「Embed In」→「Navigation Controller」即可完成嵌入。
2. 创建对应类别的题目控制器
创建两个UIViewController子类:
AnimalQuizViewController:专门展示动物类题目SoccerQuizViewController:专门展示足球类题目
你可以通过Storyboard拖入两个ViewController并关联到上述类,也可以纯代码创建控制器。
3. 给按钮绑定点击事件
在Question View Controller的代码中,给两个按钮添加IBAction事件:
Swift 代码示例
// 点击「Start Animal Quiz」按钮的事件 @IBAction func startAnimalQuizTapped(_ sender: UIButton) { // 初始化动物题目控制器(纯代码方式) let animalVC = AnimalQuizViewController() // 如果是Storyboard创建的控制器,用下面的方式初始化(替换对应标识符) // let animalVC = storyboard?.instantiateViewController(withIdentifier: "AnimalQuizVC") as! AnimalQuizViewController // 导航控制器跳转至目标页面 navigationController?.pushViewController(animalVC, animated: true) } // 点击「Start Soccer Quiz」按钮的事件 @IBAction func startSoccerQuizTapped(_ sender: UIButton) { let soccerVC = SoccerQuizViewController() // Storyboard初始化方式: // let soccerVC = storyboard?.instantiateViewController(withIdentifier: "SoccerQuizVC") as! SoccerQuizViewController navigationController?.pushViewController(soccerVC, animated: true) }
Objective-C 代码示例
- (IBAction)startAnimalQuizTapped:(UIButton *)sender { AnimalQuizViewController *animalVC = [[AnimalQuizViewController alloc] init]; // Storyboard初始化方式: // AnimalQuizViewController *animalVC = [self.storyboard instantiateViewControllerWithIdentifier:@"AnimalQuizVC"]; [self.navigationController pushViewController:animalVC animated:YES]; } - (IBAction)startSoccerQuizTapped:(UIButton *)sender { SoccerQuizViewController *soccerVC = [[SoccerQuizViewController alloc] init]; // Storyboard初始化方式: // SoccerQuizViewController *soccerVC = [self.storyboard instantiateViewControllerWithIdentifier:@"SoccerQuizVC"]; [self.navigationController pushViewController:soccerVC animated:YES]; }
4. 可选:传递题目数据
如果需要给目标控制器传递题目内容,可以在跳转前直接给属性赋值:
Swift 示例
// 先在AnimalQuizViewController中定义属性 var quizQuestions: [String] = [] // 在跳转前赋值 animalVC.quizQuestions = ["猫属于什么科?", "大象的鼻子主要功能是什么?"]
Objective-C 示例
// 在AnimalQuizViewController的.h文件中声明属性 @property (nonatomic, strong) NSArray *quizQuestions; // 跳转前赋值 animalVC.quizQuestions = @[@"猫属于什么科?", @"大象的鼻子主要功能是什么?"];
内容的提问来源于stack exchange,提问作者Emiliano Miranda
相关产品推荐
相关产品推荐

