0

我正在使用我在(本网站)中学到的自定义单元格。它在我的旧应用程序中工作,但在这个应用程序中我不知道为什么它没有工作,当我运行上面的代码时,他在行 ( NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];) 中出现绿色错误。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    CellIdentifier = @"CustomCell";
    PCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if(cell == nil){
        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
        for (id currentObject in topLevelObjects){
            if ([currentObject isKindOfClass:[UITableViewCell class]]){
                cell =  (PCustomCell *) currentObject;
                break;
            }
        }
    }
    P2Dict = [P2Rows objectAtIndex: indexPath.row];
    cell.Contracts.text = [P2Dict objectForKey:@"Contracts"];
    return cell;
}

http://ar2.co/SS2.png

4

4 回答 4

1

自定义单元 xib .file 采用 tablecell.and 在 custom.m 文件中实现。在视图控制器中,通过 viewcontroller xib 或以编程方式设置整个 tableview。作为您的选择。并设置委托和数据源方法。在数据源方法中编写自定义单元格。下面写的代码

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Custom";

CustomTableCell *cell = (CustomTableCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (!cell)
{
    UINib *nib = [UINib nibWithNibName:@"CustomTableCell" bundle:nil];
    NSArray *arr = [nib instantiateWithOwner:nil options:nil];
    cell = [arr objectAtIndex:0];
}

cell.textLabel.text =[arr objectAtIndex:indexPath.row];

}

于 2012-08-09T17:59:37.723 回答
0

您的错误状态:“无法在名为“CustomCell”的包中加载 NIB”。所以这就是你的问题......你的xib是什么名字?

于 2012-08-09T17:37:51.667 回答
0

你在 CustomCell.xib 有 UITableviewCell(PCustomCell) 吗?您应该在此处显示错误的屏幕截图。这会很有帮助。

于 2012-08-09T17:29:14.263 回答
0

参考以下流程。如何创建自定义表格单元格是一种。

VocaTableCell 就是我的例子。制作一个您的 CustomTableCell。

在此处输入图像描述 在此处输入图像描述


#import <UIKit/UIKit.h>

@interface VocaTableCell : UITableViewCell 
{
    UILabel *vocaLabel;
}
@property (nonatomic, retain) IBOutlet UILabel *vocaLabel;

@end

#import "VocaTableCell.h"


@implementation VocaTableCell
@synthesize vocaLabel;

- (void)dealloc {
    [vocaLabel release];
    [super dealloc];
}
@end

下面的代码参考Befoe,您是否正确制作了customTableCell?下面的列表检查请。

有几种方法可以创建关于 customTablecell。

我的方式很受欢迎。

  1. 文件所有者的 CustomTabelCell 应该是NSObject。(非常重要的默认值是 Maybe UITableCell。你必须是更改文件的所有者 NSObject(NSObject 的意思是 id 类型!))

  2. CustomTableCell 将对象类链接到您的 CustomTableCell 类。

  3. 引用 Outlets 链接不是 File's Owner,必须是您的直接链接 CustomTableCell。


-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Custom";

    CustomTableCell *cell = (CustomTableCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (!cell)
    {
        UINib *nib = [UINib nibWithNibName:@"CustomTableCell" bundle:nil];
        NSArray *arr = [nib instantiateWithOwner:nil options:nil];
        cell = [arr objectAtIndex:0];
    }

    cell.textLabel.text =[arr objectAtIndex:indexPath.row];
}
于 2012-08-09T17:30:27.023 回答