gpt4 book ai didi

ios - 在 Swift 中访问自定义 UITableViewCell UILabel 文本会引发错误

转载 作者:行者123 更新时间:2023-11-28 07:18:03 25 4
gpt4 key购买 nike

我正在尝试创建一个自定义 UITableViewCell,其中包括我自己的 UILabel。

我用 Swift 创建了一个单 View 应用程序,并添加了一个带有 .xib 文件的 Cocoa Touch 类,然后我添加了 UILabel 并在新文件(CustomCell 类)中创建了一个 Outlet。

在主 StoryBoard 中,我添加了一个 UITableView,并用数据对其进行了初始化(实现 UITableViewDataSource 和 UITableViewDelegate)。

当我尝试访问 UILabel 中的文本属性时,它失败并出现以下错误:

fatal error: Can't unwrap Optional.None

这是我的 CustomCell 类:

import UIKit

class CustomCell: UITableViewCell {

@IBOutlet var myLbl: UILabel

override func awakeFromNib() {
super.awakeFromNib()
}

func SetValue(value: String){
myLbl.text = value // Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
}

更新:这是在主 ViewController 中创建单元格的代码:

    func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!{
var cell = CustomCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Default")
cell.SetValue(stringArray[indexPath.row])
return cell;
}

最佳答案

您收到该错误是因为 myLbl 为零。

那是因为您没有使用 Nib 创建单元格。您正在使用 init 风格。你应该做的是用 TableView 注册 Nib ,然后在 TableView 上使用双端队列:

override func viewDidLoad() {
var cellNib = UINib(nibName:"ANibName", bundle: nil)
self.tableView.registerNib(cellNib, forCellReuseIdentifier: "default")
}

func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!{
var cell = tableView.dequeueReusableCellWithIdentifier("default", forIndexPath: indexPath) as CutomCell
cell.SetValue(stringArray[indexPath.row])
return cell;
}

但是,如果您在 Nib 中为您的 View Controller 创建模板单元格,则不必为单元格注册单独的 Nib,但您仍然需要像上面那样对单元格进行双端队列。

关于ios - 在 Swift 中访问自定义 UITableViewCell UILabel 文本会引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24391229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com