Xcode - 标签栏项目视图中的标签出口为零
Posted
技术标签:
【中文标题】Xcode - 标签栏项目视图中的标签出口为零【英文标题】:Xcode - Label outlet is nil in tab bar item views 【发布时间】:2015-01-28 23:53:33 【问题描述】:我有一个拆分视图控制器,表格视图的单元格有一个标签栏的 segue,它的视图控制器有一个 segue
问题是我给destinationViewController传数据的时候,数据传成功了,但是这个view里面的label outlet是nil。
这是 TableViewController 中的 prepareForSegue 方法
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
println("segue happened")
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
if let indexPath = self.tableView.indexPathForSelectedRow()
let patient = patients[indexPath.row]
let controller = (segue.destinationViewController as UITabBarController).viewControllers![0] as personalViewController
controller.patient = patient
这是personalViewController(第一个标签)
import UIKit
class personalViewController: UIViewController
@IBOutlet weak var lblName: UILabel!
@IBAction func btnButton(sender: AnyObject)
let temp = self.patient
self.patient = temp
var patient : Patient?
didSet
println("patient didSet")
self.setData()
[...]
func setData()
println( self.lblName == nil ) // true when selecting an element in table view but false if I set data using btnButton button
println( self.patient!.name ) // always set correctly
if lblName != nil // had to add this line to prevent crash
lblName.text = patient!.name
// The previous line crashes when using table view for navigation
// it does not crash when clicking a button (btnButton)
每当我在患者的didSet
中使用插座 lblName 时(通过单击表格单元格),我都会得到 nil。但是,如果我创建一个在该视图中设置 lblName 的按钮,它就可以工作。
我做错了什么?
【问题讨论】:
【参考方案1】:这很尴尬,在花了一整天试图弄清楚这一点之后,我似乎在视图初始化之前调用了 setData 方法。
与其在患者属性的didSet中调用setData方法,不如在UIViewController的viewDidLoad方法中调用
var patient : Patient?
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view.
println( "Personal View Did Load");
setData()
【讨论】:
以上是关于Xcode - 标签栏项目视图中的标签出口为零的主要内容,如果未能解决你的问题,请参考以下文章
将数据从标签栏控制器传递到 swift 和 xcode 中的视图控制器
使用新的 Xcode13+ 编译和运行我的 tvOS 项目,标签栏随 scrollView 滚动,我无法访问拆分视图控制器