Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 添加自定义UITableViewCell会使模拟器崩溃_Iphone_Objective C_Cocoa_Xcode_Macos - Fatal编程技术网

Iphone 添加自定义UITableViewCell会使模拟器崩溃

Iphone 添加自定义UITableViewCell会使模拟器崩溃,iphone,objective-c,cocoa,xcode,macos,Iphone,Objective C,Cocoa,Xcode,Macos,我正在尝试使用自定义的UITableViewCell构建我的应用程序。这是myUIViewController中的代码,用于将viewCell添加到表中: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"------- Tableview --------"); static NSString

我正在尝试使用自定义的
UITableViewCell
构建我的应用程序。这是my
UIViewController
中的代码,用于将
viewCell
添加到表中:

  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{   
    NSLog(@"------- Tableview --------");

    static NSString *myIdentifier = @"MyIdentifier";

    MyTableCell *cell = (MyTableCell *)[tableView dequeueReusableCellWithIdentifier:myIdentifier];
    if(cell == nil) {
        NSArray *cellView = [[NSBundle mainBundle] loadNibNamed:@"tblCellView" owner:self options:nil];
        cell = [cellView objectAtIndex:0];
    }

    [cell setLabelText:[NSString stringWithFormat:@"indexpath.row: %d", indexPath.row]];


    //cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:myIdentifier] autorelease];
    cell.textLabel.text = @"bös";
    return cell;
    }
如果我取消对“return cell”上方的行的注释,它将返回一个常规的
UITableViewCell
,没有任何错误,但一旦我尝试实现我的自定义单元格,它就会崩溃,出现以下错误:

-------Tableview------2010-04-23 11:17:33.163高尔夫[26935:40b]*在-[UITableView]中断言失败 _createPreparedCellForGlobalRow:withIndexPath:,/SourceCache/UIKit_Sim/UIKit-984.38/UITableView.m:4709 2010-04-23 11:17:33.164高尔夫[26935:40b]*由于未捕获而终止应用程序 异常“NSInternalInconsistencyException”,原因:“UITableView” 数据源必须从tableView返回单元格:cellForRowAtIndexPath:' 2010-04-23 11:17:33.165高尔夫球[26935:40b]堆叠:(


我已使用正确的输出口配置了.xib文件。UITableViewCell的标识符与我试图从NSBundle加载的名称相对应。我看不到在哪里声明了
tblCell
,这可能是代码的许多问题之一。首先,您需要执行以下操作:

if (cell == nil) {
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil];
    cell = (MyTableCell *)[nib objectAtIndex:0];
}
您只是加载nib,但从未从中提取单元格

--更新--


您还应该检查IB中的自定义单元格是否有任何错误或不正确的绑定。

我看不到在哪里声明了
tblCell
,这可能是您的代码的许多问题之一。首先,您需要执行以下操作:

if (cell == nil) {
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil];
    cell = (MyTableCell *)[nib objectAtIndex:0];
}
您只是加载nib,但从未从中提取单元格

--更新--


您还应该检查IB中的自定义单元格是否有任何错误或不正确的绑定。

我认为
loadNibNamed:
nethod出于某种原因返回nil。因此,结果单元格对象也返回nil。

我认为
loadNibNamed:
nethod出于某种原因返回nil。因此,结果单元格对象也返回nil。

您还应该确保将Interface Builder中的自定义类类型设置为相应的类名(在您的示例中为
MyTableCell
),否则强制转换也将不起作用。

您还应确保将Interface Builder中的自定义类类型设置为相应的类名(在您的示例中为
MyTableCell
),否则强制转换也将无法工作。

我创建此定义是为了提供帮助


#define LoadViewNib(__NIBNAME__) [[[NSBundle mainBundle] loadNibNamed:__NIBNAME__ owner:self options:nil] objectAtIndex:0]
对于使用,您只能这样做



 if(cell == nil) {

        cell = LoadViewNib(@"MyCellNibName");
 }


我创建这个定义是为了帮助您


#define LoadViewNib(__NIBNAME__) [[[NSBundle mainBundle] loadNibNamed:__NIBNAME__ owner:self options:nil] objectAtIndex:0]
对于使用,您只能这样做



 if(cell == nil) {

        cell = LoadViewNib(@"MyCellNibName");
 }

参考:

如果您正在加载自己的自定义单元格,则“要为此过程的编程部分设置的一个重要属性是每个对象的标记属性。请在属性窗格的视图部分中找到此属性,并为每个对象指定一个唯一的整数。”

现在像这样检索标签 (我假设您将tag=1指定给label)

参考:

如果您正在加载自己的自定义单元格,则“要为此过程的编程部分设置的一个重要属性是每个对象的标记属性。请在属性窗格的视图部分中找到此属性,并为每个对象指定一个唯一的整数。”

现在像这样检索标签 (我假设您将tag=1指定给label)


对不起,这是旧代码。我现在更新了我的原始问题。请尝试将其转换为(MyTableCell*)对不起,这是旧代码。我现在更新了我的原始问题。尝试将其转换为(MyTableCell*)尝试将其转换为(MyTableCell*))别忘了导入.m文件中的自定义单元格并与自定义单元格绑定。还要检查tableview委托的数据源。尝试将其强制转换为(MyTableCell*)别忘了在.m文件中导入自定义单元格,并与自定义单元格绑定。此外,还要检查tableview委托的数据源。这是一个老问题,但我相信这是我问题的解决方案,因此我将此标记为答案。我有一个类似的问题,这个答案让我找到了它。我忘了将文件所有者的类型设置为我的viPhone xib中的视图控制器,所以我只在iPhone上崩溃。这是一个老问题,但我相信这是我问题的解决方案,所以我将此标记为答案。我有一个类似的问题,这个答案让我找到了它。我忘了在iPhone xib中将文件所有者的类型设置为我的视图控制器,所以我只在iPhone xib中崩溃在iPhone上。