如何将第一个Storyboard中ViewController的数据传递到第二个Storyboard的ViewController
实现步骤
1. 为第二个视图控制器定义接收属性
首先在第二个Storyboard对应的目标视图控制器类中,声明两个属性用来接收传递过来的学校名称和logo地址,同时提前定义好UI控件的IBOutlet:
import UIKit class 你的第二个视图控制器类名: UIViewController { // 接收数据用的属性 var receivedSchoolName: String? var receivedSchoolLogoUrl: String? // 展示用的UI控件IBOutlet @IBOutlet weak var schoolNameLabel: UILabel! @IBOutlet weak var schoolLogoImageView: UIImageView! }
2. 配置Segue关联(如果使用Storyboard Segue跳转)
- 打开第一个Storyboard,按住
ctrl键拖动首页按钮到第二个Storyboard的目标视图控制器,选择合适的跳转样式(例如Show、Present Modally) - 选中生成的Segue连线,在右侧属性检查器中给Segue设置唯一标识,例如
jumpToSecondVC
3. 在第一个视图控制器中实现prepareForSegue方法
在第一个视图控制器的类代码中添加如下方法,在Segue触发前完成数据传递:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // 校验当前触发的Segue是否是跳转到第二个页面的连线 guard segue.identifier == "jumpToSecondVC", let targetVC = segue.destination as? 你的第二个视图控制器类名 else { return } // 传递当前页面的学校名称和logo地址 targetVC.receivedSchoolName = schoolNameLabel.text targetVC.receivedSchoolLogoUrl = UserDefaults.standard.string(forKey: "schoolLogo") }
4. 第二个视图控制器渲染接收的数据
在第二个视图控制器的viewDidLoad方法中,把接收到的数据赋值给对应UI控件:
override func viewDidLoad() { super.viewDidLoad() // 赋值学校名称 schoolNameLabel.text = receivedSchoolName // 加载学校logo if let logoUrlStr = receivedSchoolLogoUrl, let logoUrl = URL(string: logoUrlStr) { schoolLogoImageView.sd_setImage(with: logoUrl, completed: nil) } }
可选方案:代码触发跳转时的传值方式
如果你不需要用Segue,而是直接在按钮点击事件中用代码触发跳转,可以用如下方式实现:
// 首页按钮的点击事件 @IBAction func homeButtonClicked(_ sender: UIButton) { // 从第二个Storyboard中初始化目标视图控制器 let secondSB = UIStoryboard(name: "第二个Storyboard的文件名", bundle: nil) guard let targetVC = secondSB.instantiateViewController(withIdentifier: "目标VC的Storyboard ID") as? 你的第二个视图控制器类名 else { return } // 传值 targetVC.receivedSchoolName = schoolNameLabel.text targetVC.receivedSchoolLogoUrl = UserDefaults.standard.string(forKey: "schoolLogo") // 执行跳转,根据你的导航结构选择push或者present方式 navigationController?.pushViewController(targetVC, animated: true) // 如果是模态跳转使用:present(targetVC, animated: true) }
内容的提问来源于stack exchange,提问作者dextermikles
相关产品推荐
相关产品推荐

