Swift - UIView.text 显示为 Nil

Posted

技术标签:

【中文标题】Swift - UIView.text 显示为 Nil【英文标题】:Swift - UIView.text Showing Up as Nil 【发布时间】:2016-06-24 20:02:11 【问题描述】:

我是 Swift 初学者。我正在创建一个简单的 Parse 记事本 ios 应用程序,以供练习。我正在尝试从一个类访问在另一个类中创建的 uitextview。这会导致 uitextview 为 nil 的错误。

例如,我的 tableviewcell 类很简单,只有两个 uiview 连接到它(插座连接正确):

 @IBOutlet weak var titleLabel: UITextView!

@IBOutlet weak var descriptionLabel: UITextView!

 override func awakeFromNib() 
        titleLabel.text = "Title"
        descriptionLabel.text = "Description"
    

然后我尝试从我的 detailviewcontroller 类中访问这些属性,但出现错误 “unexpectedly found nil when unwrapping an optional”,即使我的 titleLabel 和 descriptionLabel 都具有以编程方式设置的值.

detailviewcontroller 类(在 viewdidload 中):

let customCell = TableViewCell()

    var Title = customCell.titleLabel.text
    let Description = customCell.descriptionLabel.text

非常感谢您的帮助。谢谢。

*另外请注意我的 IBOutlets 连接正确

【问题讨论】:

这有什么更新吗?我也面临同样的问题! 【参考方案1】:

只有这一行的问题

let customCell = TableViewCell()

可以通过多种方式将值传递给 DetailViewController,如果您通过 segue 更改视图,则可以使用此

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
    // Get the new view controller using segue.destinationViewController.
    // Pass the selected object to the new view controller.
    //add if condition with segue identifier for proper functioning of this code

    let selectedIndexPath = tableView.indexPathForSelectedRow!
    let customCell = tableView.cellForRowAtIndexPath( selectedIndexPath ) as! TableViewCell

    let destinationViewController = segue.destinationViewController as! DetailViewController
    destinationViewController.Title = customCell.titleLabel.text!
    destinationViewController.Description = customCell.descriptionLabel.text!
    //you can set other properties too here

在您的 DetailViewController 中,在函数 viewdidload 之外声明变量 Title 和 Description

【讨论】:

不要将willSelectRow...中的新单元格出列,使用tableView.cellForRowAtIndexPath(indexPath)获取当前单元格 为什么 dequeueReusableCellWithIdentifierwillSelectRowAtIndexPath 中? @pratikxman 但我希望能够在 detailviewcontroller 中访问单元格,而不是 masterviewcontroller。这可能吗?谢谢。 @pratikxman 非常感谢您的回答。我只有一个问题,那就是由于某种原因没有调用 prepareForSegue 函数(我把它放在 detailviewcontroller 中)。你知道为什么会这样吗?谢谢。 @StephaneHatgiskessell 上面的代码函数 prepareForSegue 应该在您的 tableviewcontroller 中,并且只有在 segue 完成转换时才会起作用。你能解释一下你是如何从 tableviewcontroller 到 detailviewcontroller 再回到 tableviewcontroller

以上是关于Swift - UIView.text 显示为 Nil的主要内容,如果未能解决你的问题,请参考以下文章

Swift:更改 UIView 框架但显示不更新

swift 以N为基数

Swift requestWhenInUseAuthorization 不起作用

屏幕截图显示为空白 - Swift

Swift:布尔如果为真,不显示图像

如何使用关系 Swift 3 显示 UITableView