我想知道在哪里输入自定义代码来更改UITableViewCell的Label属性的值。
我不确定如何加载它,因为我在ViewDidLoad和(id)initWithStyle实例方法中放了一个NSLog,但都没有写入日志。
我已经设置了所有正确链接的NIB和自定义类,并且Label作为属性链接,不再导致错误。但是我无法设置文本。
这是自定义单元格的调用方式:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
LeftMenuTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"LeftMenuTableViewCell" owner:nil options:nil];
for (UIView *view in views) {
if([view isKindOfClass:[UITableViewCell class]])
{
cell = (LeftMenuTableViewCell*)view;
}
}
}
return cell;
}
这是LeftMenuViewCell类的IMP文件中的代码。
-(void)viewDidLoad {
displayName.text = [self.user objectForKey:@"displayName"];
我可以将displayName设置为字符串,但这也不会改变。如果我为自定义单元格类的viewDidLoad添加了一个NSLog,它没有显示,就像没有加载一样,但是单元格被加载了......?
答案 0 :(得分:1)
如果没有代码细节,我只能给出一个模糊的回答。
您的自定义单元格需要子类UITableViewCell
,并且您需要在数据源方法tableView:cellForRowAtIndexPath:
时为您的表提供此自定义子类。
我建议您阅读如何在UITableView
s中添加/使用单元格:
http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/TableViewCells/TableViewCells.html#//apple_ref/doc/uid/TP40007451-CH7-SW1
答案 1 :(得分:0)
例如
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
RouteCell *routeCell = [self.tableView dequeueReusableCellWithIdentifier:routeIdentifier];
if (routeCell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"RouteCell" owner:nil options:nil];
routeCell = [nib objectAtIndex:0];
}
routeCell.travelTime.text = @"Here you are setting text to your label";
return routeCell;
答案 2 :(得分:0)
假设您使用名为testLabel的UILabel定制了UITableViewCell。如果您的NIB和自定义类链接正确,则可以使用以下代码:
MyTableViewCell.h
@interface MyTableViewCell : UITableViewCell
@property (nonatomic, assign) IBOutlet UILabel *testLabel;
@end
UITableViewController或UIViewController中的cellForRowAtIndexPath:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"MyTableViewCellId";
MyTableViewCell *cell = (MyTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"MyTableViewCell" owner:self options:nil];
cell = [topLevelObjects objectAtIndex:0];
}
[cell.testLabel.text = [_dataSource objectAtIndex:[indexPath row]]];
return cell;
}
希望有所帮助:)