首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >> -[UITableView UITableView中的断言失败“

> -[UITableView UITableView中的断言失败“
EN

Stack Overflow用户
提问于 2015-05-18 03:28:10
回答 4查看 7.9K关注 0票数 0

当我尝试addSubView()UITableViewCell时,我收到了这个错误消息。

错误消息

2015-05-18 11:26:46.048 xxxxx1128:437863 * -UITableView -UITableView 2015-05-18 11:46.053 DateTick1128:437863 *终止应用程序因未命名的异常“NSInternalInconsistencyException”原因:“无法使用标识符AgeCell --必须为标识符注册一个nib或类或在情节提要中连接原型单元格”*第一次抛出调用堆栈:(0x1856982d8 0x196ebc0e4 0x185698198 0x18654ced4 0x18a251e84 0x100094c20 0x100095070 0x18a3d9a68 0x3cd890 0x571b9268 0x18a60 0x189a1de1c 0189a84 0x189a18a18728 0x189a17ebc 0xa17c17ebc 0xa170c 180x5x364 0 NSException )

我已经在AgeCell标识符中声明了UITableViewCell

我的代码:

代码语言:javascript
复制
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("AgeCell", forIndexPath: indexPath) as! UITableViewCell //1

        let slider =  RangeSlider(frame:cell.bounds)
        slider.minimumValue = 1;
        slider.selectedMinimumValue = 2;
        slider.maximumValue = 10;
        slider.selectedMaximumValue = 8;
        slider.minimumRange = 2;
        slider.addTarget(self, action:"updateRangeLabel", forControlEvents:UIControlEvents.ValueChanged)

        cell.addSubview(slider)
        return cell
    }

顺便说一下,我的UITableViewController是一个静态单元,而不是一个动态单元。

EN

回答 4

Stack Overflow用户

发布于 2015-07-25 09:24:02

Swift的语法是

代码语言:javascript
复制
let nib = UINib(nibName: "AgeCell", bundle: nil)
self.tableView.registerNib(nib, forCellReuseIdentifier:"AgeCell")
票数 3
EN

Stack Overflow用户

发布于 2015-05-18 07:26:34

注意,dequeueReusableCellWithIdentifier:和dequeueReusableCellWithIdentifier是不同的方法。

文件上说:

注意:在调用此方法之前,您必须使用registerNib:forCellReuseIdentifier:或registerClass:forCellReuseIdentifier: method注册一个类或nib文件。

有关此主题的更多细节,请参见Check out this Q&A.

迅速注册NIB:

代码语言:javascript
复制
UINib nib = UINib.nibWithNibName("AgeCell", bundle:nil);
self.tableView.registerNib(nib, forCellReuseIdentifier:"AgeCell");
票数 1
EN

Stack Overflow用户

发布于 2015-05-18 05:22:10

您需要向UITableView注册您的手机的nib。这样,UITableView就会知道您的reuseIdentifier "AgeCell"与单元格匹配。您通常在viewDidLoad中为视图控制器执行此操作。

在目标C中:

代码语言:javascript
复制
-(void)viewDidLoad {
    [super viewDidLoad];

    UINib * nib = [UINib nibWithNibName:@"AgeCell" bundle:nil];
    [self.tableView registerNib:nib forCellReuseIdentifier:@"AgeCell"];
}

在Swift:

代码语言:javascript
复制
override func viewDidLoad() {
    super.viewDidLoad()

    let nib = UINib(nibName: "AgeCell", bundle: nil)
    self.tableView.registerNib(nib, forCellReuseIdentifier:"AgeCell")
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30294656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档