请耐心等待我,我刚开始iOS开发。我想在故事板tableViewCell
中显示自定义tableView
。我做了以下事情。
我创建了一个新的.xib
,其中包含tableViewCell
然后我为此创建了一个自定义类。 .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
方法中放置了一个断点,但它从未达到过这一点。这是模拟器的屏幕截图
答案 0 :(得分:13)
您必须注册 .xib 文件。在viewDidLoad
方法中,添加以下内容:
[self.tableView registerNib:[UINib nibWithNibName:@"CustomTableCell" bundle:nil]
forCellReuseIdentifier:@"CustomTableCell"];
答案 1 :(得分:9)
你加载笔尖的方式真的过时了,过时了。注册笔尖并使用dequeueReusableCellWithIdentifier:forIndexPath:
。
请参阅获取自定义单元格的所有四种方法的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)
}