dequeueReusableCellWithIdentifier:forIndexPath:

dequeueReusableCellWithIdentifier:forIndexPath:中的断言失败

所以我为我的学校制作了一个RSS阅读器并完成了代码。我做了测试它给了我那个错误。下面是它所指的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = 
     [tableView dequeueReusableCellWithIdentifier:CellIdentifier 
                                     forIndexPath:indexPath];
    if (cell == nil) {

        cell = 
         [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle  
                                reuseIdentifier:CellIdentifier];

    }

以下是输出中的错误:

2012年-10-04 20:13:05.356阅读器[4390:C07]*断言失败出现在-[UITableView dequeueReusableCellWithIdentifier:forIndexPath:],/SourceCache/UIKit_Sim/UIKit-2372/UITableView.m:4460 2012-10-04 20:13:05.357 Reader[4390:C07]*由于“NSInternalInconsistencyException”异常终止应用程序,原因是:“无法用标识符单元格排出单元格-必须为标识符注册一个nib或类,或者在情节提要中连接一个原型单元格”*First throw call stack:(0x1c91012 0x10cee7e 0x1c90e78 0xb64f35 0xc7d14 0x39ff 0xd0f4b 0xd101f 0xb980b 0xca19b 0x6692d 0x10e26b0 0x228dfc0 0x228233c 0x228deaf 0x1058cd 0x4e1a6 0x4ccbf 0x4cbd9 0x4be34 0x4bc6e 0x4ca29 0x4f922 0xf9fec 0x46bc4 0x47311 0x2cf3 0x137b7 0x13da7 0x14fab 0x26315 0x2724b 0x18cf8 0x1becdf9 0x1becad0 0x1c06bf5 0x1c06962 0x1c37bb6 0x1c36f44 0x1c36e1b 0x147da 0x1665c 0x2a02 0x2935)libc++abi.dylib:terminate called throwing an exception

下面是它在错误屏幕中显示的代码:

int main(int argc, char *argv[]){
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }}

救命啊!


慕哥6287543
浏览 940回答 3
3回答

蝴蝶刀刀

你用的是dequeueReusableCellWithIdentifier:forIndexPath:方法。这个文献资料对于该方法来说,如下所示:重要:必须使用registerNib:forCellReuseIdentifier:或registerClass:forCellReuseIdentifier:方法之前调用此方法。您没有为重用标识符注册nib或类"Cell".查看您的代码,您似乎期望deQueue方法返回。nil如果它没有手机给你。您需要使用dequeueReusableCellWithIdentifier:对于这种行为:UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];注意dequeueReusableCellWithIdentifier:和dequeueReusableCellWithIdentifier:forIndexPath:是不同的方法。见医生前者和后者.如果你想知道为什么你想用dequeueReusableCellWithIdentifier:forIndexPath:, 看看这个问答.

忽然笑

我也有同样的问题static NSString *CellIdentifier = @"Cell";     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];    if (cell==nil) {         cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];     }解
打开App,查看更多内容
随时随地看视频慕课网APP