ios - 无法更改 Swift iOS 自定义单元格属性(展开空可选)

标签 ios swift

关于这件事情好像很热门的问题我都看完了。无论如何,我已经创建了一个简单的应用程序,其中包含一个使用自定义单元格的 TableView 。 我使用 Storyboard,并使用与我创建的类相同的名称定义单元格,Xcode 甚至自动完成了我。 虽然当我初始化一个新单元格时,我无法更改单元格中包含的标签和图像的属性。我收到一条错误消息,说我访问了一个 nil,我有点明白了。尽管我似乎找不到解决方法。有人可以帮忙吗?

import UIKit

class ExtenderCell: UITableViewCell {

@IBOutlet var main_image: UIImageView! 
@IBOutlet var name_label: UILabel! 
@IBOutlet var desc_label: UILabel!

init(to_put_image: UIImage, name: String, desc:String){
    super.init(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")
    name_label.text = name
    desc_label.text = desc
    main_image.image = to_put_image
}
}

最佳答案

您正在使用 storyBoard 通过 outlets 创建单元格。直到 awakeForNib( ) 使用 storyBoard 因为它在 awakeFromNib 之前未解压缩。 您的 outlets 或 properties 中为 nil init 所以当您尝试在 init 方法中unwrap nil outlet property 时出现此异常。

由于您的outlet 属性init 方法中不可访问并且它们在init 中为nil。所以您需要设置您的 awakeForNib() 中的 outlets。或者您可以在 cellForRowAtIndexPath 中设置属性。因此,最好的方法是将 init 方法设置为实例方法如果你想使用storyBoard

import UIKit

class ExtenderCell: UITableViewCell {

@IBOutlet var main_image: UIImageView! 
@IBOutlet var name_label: UILabel! 
@IBOutlet var desc_label: UILabel!

func setContents(to_put_image: UIImage, name: String, desc:String){

    name_label.text = name
    desc_label.text = desc
    main_image.image = to_put_image
}
}

cellForRowAtIndexPath中设置单元格的内容

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
      //Check your identifier in storyBoard is "cell"
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as ExtendedCell 
    cell.setContents(yourImage, name: yourName, desc: yourDescription)

    return cell
}

关于ios - 无法更改 Swift iOS 自定义单元格属性(展开空可选),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25105028/

相关文章:

ios - Swift NSNotificationCenter 在其他类中添加观察者功能

ios - ATS 将在 IOS 应用程序中强制执行。简单的饲料呢?

iphone - 两个 UIWebView,如何设置第二个 webview,以便在单击链接时将它们发送到第一个 webview 进行加载?

ios - swift iOS - NSURLSession 无法正确下载多个文件

ios - 以编程方式实例化 TableViewController 子类后,其导出为零

swift - Xcode 6 中自动布局的基础知识

ios - 我如何在 iOS swift 中制作登录屏幕的单元测试用例

ios - 如何在 iPhone 中调试应用程序?

ios - 在 iOS 中显示 View 而不是默认通知

ios - UIView 出现错误的中心位置