我有一个应用程序,我使用tableView,但行的实例在cellForRowAtIndexPath为nil。
这是我的代码:
这是TableViewController.h
#import <UIKit/UIKit.h>
@interface TableViewController : UITableViewController <UITableViewDataSource, UITableViewDelegate>
@property (strong, nonatomic) IBOutlet UITableView *tableView;
@end
这是TableViewController.m
#import "TableViewController.h"
#import "ProgramCell.h"
@implementation TableViewController
{
NSArray *arrayDays;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Initialize table data
for(int i=0;i<10;i++){
}
arrayDays = [NSArray arrayWithObjects:@"Egg Benedict", @"Mushroom Risotto", @"Full Breakfast", @"Hamburger", @"Ham and Egg Sandwich", @"Creme Brelee", @"White Chocolate Donut", @"Starbucks Coffee", @"Vegetable Curry", @"Instant Noodle with Egg", @"Noodle with BBQ Pork", @"Japanese Noodle with Pork", @"Green Tea", @"Thai Shrimp Cake", @"Angry Birds Cake", @"Ham and Cheese Panini", nil];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [arrayDays count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"CustomCell";
ProgramCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
NSLog(@"description = %@",[cell description]);
if (cell == nil) {
cell = [[ProgramCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
cell.durationLabelCell.text = @"HOLA";
return cell;
}
@end
这是我的CustomHell.h
#import <UIKit/UIKit.h>
@interface ProgramCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UILabel *dateLabel;
@property (weak, nonatomic) IBOutlet UILabel *durationLabelCell;
@property (weak, nonatomic) IBOutlet UITextView *textViewCell;
@property (weak, nonatomic) IBOutlet UILabel *presenterLabelCell;
@end
这是我的CustomCell.m
#import "ProgramCell.h"
@implementation ProgramCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
return self;
}
-(void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
}
@end
我不知道我做错了什么,如果有人可以帮助我会很棒!谢谢
答案 0 :(得分:0)
您应该将标识符设置为TableViewCell定义的一部分。
答案 1 :(得分:0)
您检查的方式&#34;单元格为空&#34;是不正确的。 \makeatletter
\def\rbracket#1#2{\y@iv#2\internote \advance\y@iv\tw@\internote
\inhgetn@i#1\relax\pl@base \advance\y@i-1\h@lf\internote
\raise\y@i\rlap{\uplap{\offinterlineskip\hbox{\roffset{1.5}{\mxsps\@xxvii}}%
\hbox{\roffset2{\vrule\@height\y@iv}}\hbox{\roffset{1.5}{\mxsps\@xxvii}}}}}
\makeatother
只返回一个可重复使用的表格视图单元格对象,如果找不到它,它将返回nil,然后是什么
-dequeueReusableCellWithIdentifier
的确是创建一个带有标识符的新单元格(以后可以使用它)。
通过打印日志检查单元格是否为空的正确方法应为
if (cell == nil) {
cell = [[ProgramCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
答案 2 :(得分:0)
Not very sure if this is related, but why do you have a reference to a table view(i.e a separate Table View variable) in a table view controller. UITableViewController implicitly provides you one instance of a UITableView. Also try registering the cellType within the table view controllers if a prototype/dynamic class