iOS 7自定义单元格未在表格视图中显示

时间:2014-01-10 16:08:35

标签: ios objective-c storyboard

请耐心等待我,我刚开始iOS开发。我想在故事板tableViewCell中显示自定义tableView。我做了以下事情。

我创建了一个新的.xib,其中包含tableViewCell

enter image description here

然后我为此创建了一个自定义类。 .h文件看起来像这样

#import <UIKit/UIKit.h>

@interface CustomTableCell : UITableViewCell

@property (weak, nonatomic) IBOutlet UIImageView *thumbnailImageView;
@property (weak, nonatomic) IBOutlet UILabel› *titleLabel;

@end

然后在我的TableViewController.m我导入了CustomTableCell.h,我正在关注10行

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 10;
}

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

    if(cell == nil)
    {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomTableCell" owner:self options:nil];
        cell = [nib objectAtIndex:0];
    }

    cell.titleLabel.text ="test text";


    return cell;
}

这似乎很好,但是当项目加载时没有任何反应。任何建议都会很棒。

我在cellForRowAtIndexPath方法中放置了一个断点,但它从未达到过这一点。这是模拟器的屏幕截图

enter image description here

7 个答案:

答案 0 :(得分:13)

您必须注册 .xib 文件。在viewDidLoad方法中,添加以下内容:

[self.tableView registerNib:[UINib nibWithNibName:@"CustomTableCell" bundle:nil] 
     forCellReuseIdentifier:@"CustomTableCell"];

答案 1 :(得分:9)

你加载笔尖的方式真的过时了,过时了。注册笔尖并使用dequeueReusableCellWithIdentifier:forIndexPath:

要好得多(自iOS 6起)

请参阅获取自定义单元格的所有四种方法的my explanation

答案 2 :(得分:7)

确保在UITableView的故事板中设置了委托和数据源。这将确保为每一行调用cellForRowAtIndexPath。您可以在该方法中添加NSLog消息来验证相同的内容。

此外,由于您使用的是故事板,因此您可能需要查看UITableView的Prototype Cells。它们是一种更容易做同样事情的方法 - 使用自定义单元格创建UITableView。

这是关于在故事板的UITableView中使用Prototype单元的一个不错的教程:

http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1

答案 3 :(得分:5)

- (void) viewDidLoad {

    [super viewDidLoad];

    UINib *cellNib = [UINib nibWithNibName:@"CustomTableCell" bundle:[NSBundle mainBundle]];
    [self.tableView registerNib:cellNib forCellReuseIdentifier:@"CustomTableCell"];

}

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

    if(cell == nil)
    {
        cell = [[CustomTableCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    cell.titleLabel.text ="test text";


    return cell;
}

答案 4 :(得分:1)

一个非常基本的问题,但您是否实现了tableview委托方法,该方法指示应显示多少个单元格?委托方法如下:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    //Return number of cells to display here
    return 1;
}

答案 5 :(得分:0)

确保xib中只有一个项目(Uitableviewcell实例)

答案 6 :(得分:-1)

int(0)
int(2)
bool(false)
bool(false)
object(DateInterval)#3 (15) {
  ["y"]=>
  int(0)
  ["m"]=>
  int(2)
  ["d"]=>
  int(1)
  ["h"]=>
  int(9)
  ["i"]=>
  int(43)
  ["s"]=>
  int(35)
  ["weekday"]=>
  int(0)
  ["weekday_behavior"]=>
  int(0)
  ["first_last_day_of"]=>
  int(0)
  ["invert"]=>
  int(1)
  ["days"]=>
  int(62)
  ["special_type"]=>
  int(0)
  ["special_amount"]=>
  int(0)
  ["have_weekday_relative"]=>
  int(0)
  ["have_special_relative"]=>
  int(0)
}