You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 06:27:22