Iphone:使用表自定义单元格

时间:2012-08-09 17:23:08

标签: iphone objective-c ios custom-cell

我正在使用我在(This site)学到的自定义单元格。它在我的旧应用程序中工作,但在这个应用程序中,我不知道为什么它没有工作,当我运行上面的代码时,他坚持使用绿色错误(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 个答案:

答案 0 :(得分:1)

自定义单元格xib .file采取tablecell。并在custom.m文件中实现。在视图控制器中通过viewcontroller xib设置整个tableview或以编程方式设置。如果你选择。并设置委托和datasourece methods.in数据源方法写入自定义cell.code写在下面

-(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];

}

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

VocaTableCell就是我的理由。制作你的CustomTableCell。

enter image description here enter image description here


#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?下面列表检查plz。

有几种方法可以创建customTablecell。

我的态度非常受欢迎。

  1. 文件所有者的CustomTabelCell应为 NSObject 。 (非常重要的默认值可能是UITableCell。你必须是一个改变文件的所有者NSObject(NSObject的意思是id类型!)

  2. CustomTableCell将一个Object Class链接到您的CustomTableCell类。

  3. 引用Outlets链接Not File的所有者,必须是您直接链接CustomTableCell。


  4. -(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];
    }
    

答案 3 :(得分:0)

您的错误指出:“无法在名为”CustomCell“的软件包中加载NIB”。所以你的问题就在于......你的xib名称是什么?