名称未显示在 UITableView 中
Name is not displayed in UITableView
我想在 https://github.com/singhson/Expandable-Collapsable-TableView 上做一个使用故事板的例子。我正在尝试使用 xib 文件来做到这一点。我应该在 cellForRowAtIndexPath 中进行哪些更改才能获得所需的输出?我试过这样的东西
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier=@"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if(cell==nil)
{
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
NSString *Title= [[self.itemsInTable objectAtIndex:indexPath.row] valueForKey:@"Name"];
[self createCellWithTitle:Title image:[[self.itemsInTable objectAtIndex:indexPath.row] valueForKey:@"Image name" ] indexPath:indexPath];
// return [self createCellWithTitle:Title image:[[self.itemsInTable objectAtIndex:indexPath.row] valueForKey:@"Image name"] indexPath:indexPath];
return cell;
}
- (UITableViewCell*)createCellWithTitle:(NSString *)title image:(UIImage *)image indexPath:(NSIndexPath*)indexPath
{
NSString *CellIdentifier = @"Cell";
ExpandableTableViewCell* cell = [self.menuTableView dequeueReusableCellWithIdentifier:CellIdentifier];
UIView *bgView = [[UIView alloc] init];
bgView.backgroundColor = [UIColor grayColor];
cell.selectedBackgroundView = bgView;
cell.lblTitle.text = title;
cell.lblTitle.textColor = [UIColor blackColor];
[cell setIndentationLevel:[[[self.itemsInTable objectAtIndex:indexPath.row] valueForKey:@"level"] intValue]];
cell.indentationWidth = 25;
float indentPoints = cell.indentationLevel * cell.indentationWidth;
cell.contentView.frame = CGRectMake(indentPoints,cell.contentView.frame.origin.y,cell.contentView.frame.size.width - indentPoints,cell.contentView.frame.size.height);
NSDictionary *d1=[self.itemsInTable objectAtIndex:indexPath.row] ;
if([d1 valueForKey:@"SubItems"])
{
cell.btnExpand.alpha = 1.0;
[cell.btnExpand addTarget:self action:@selector(showSubItems:) forControlEvents:UIControlEventTouchUpInside];
}
else
{
cell.btnExpand.alpha = 0.0;
}
return cell;
}
现在我得到了可以展开或折叠的 table,但我没有在 table 视图中显示名称。我还应该做哪些其他更改才能使其正常工作?请帮忙
我的建议:
- 使用
dequeueReusableCellWithIdentifier:forIndexPath:
(如果您没有注册 class,请注意)而不是 dequeueReusableCellWithIdentifier:
,因为如果您没有注册,最后一个不会崩溃标识符的 class 或 nib,仅 returns nil.
- 确保您将 ExpandableTableViewCell class 的“lblTitle”正确链接到界面生成器中的 xib。
- 签入此说明:cell.lblTitle.text = 标题;如果标题为 nil 或者即使您的 lblTitle 为 nil。
- 检查 lblTitle 是否越界(您正在更改此行中的 contentView:cell.contentView.frame = CGRectMake(indentPoints,cell.contentView.frame.origin.y,cell.contentView.frame.size。宽度 - 缩进点,cell.contentView.frame.size.height);)
- 您是否在 viewDidLoad 中使用“registerClass:forCellReuseIdentifier:”注册了 ExpandableTableViewCell?
希望对你有帮助。
我想在 https://github.com/singhson/Expandable-Collapsable-TableView 上做一个使用故事板的例子。我正在尝试使用 xib 文件来做到这一点。我应该在 cellForRowAtIndexPath 中进行哪些更改才能获得所需的输出?我试过这样的东西
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier=@"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if(cell==nil)
{
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
NSString *Title= [[self.itemsInTable objectAtIndex:indexPath.row] valueForKey:@"Name"];
[self createCellWithTitle:Title image:[[self.itemsInTable objectAtIndex:indexPath.row] valueForKey:@"Image name" ] indexPath:indexPath];
// return [self createCellWithTitle:Title image:[[self.itemsInTable objectAtIndex:indexPath.row] valueForKey:@"Image name"] indexPath:indexPath];
return cell;
}
- (UITableViewCell*)createCellWithTitle:(NSString *)title image:(UIImage *)image indexPath:(NSIndexPath*)indexPath
{
NSString *CellIdentifier = @"Cell";
ExpandableTableViewCell* cell = [self.menuTableView dequeueReusableCellWithIdentifier:CellIdentifier];
UIView *bgView = [[UIView alloc] init];
bgView.backgroundColor = [UIColor grayColor];
cell.selectedBackgroundView = bgView;
cell.lblTitle.text = title;
cell.lblTitle.textColor = [UIColor blackColor];
[cell setIndentationLevel:[[[self.itemsInTable objectAtIndex:indexPath.row] valueForKey:@"level"] intValue]];
cell.indentationWidth = 25;
float indentPoints = cell.indentationLevel * cell.indentationWidth;
cell.contentView.frame = CGRectMake(indentPoints,cell.contentView.frame.origin.y,cell.contentView.frame.size.width - indentPoints,cell.contentView.frame.size.height);
NSDictionary *d1=[self.itemsInTable objectAtIndex:indexPath.row] ;
if([d1 valueForKey:@"SubItems"])
{
cell.btnExpand.alpha = 1.0;
[cell.btnExpand addTarget:self action:@selector(showSubItems:) forControlEvents:UIControlEventTouchUpInside];
}
else
{
cell.btnExpand.alpha = 0.0;
}
return cell;
}
现在我得到了可以展开或折叠的 table,但我没有在 table 视图中显示名称。我还应该做哪些其他更改才能使其正常工作?请帮忙
我的建议:
- 使用
dequeueReusableCellWithIdentifier:forIndexPath:
(如果您没有注册 class,请注意)而不是dequeueReusableCellWithIdentifier:
,因为如果您没有注册,最后一个不会崩溃标识符的 class 或 nib,仅 returns nil. - 确保您将 ExpandableTableViewCell class 的“lblTitle”正确链接到界面生成器中的 xib。
- 签入此说明:cell.lblTitle.text = 标题;如果标题为 nil 或者即使您的 lblTitle 为 nil。
- 检查 lblTitle 是否越界(您正在更改此行中的 contentView:cell.contentView.frame = CGRectMake(indentPoints,cell.contentView.frame.origin.y,cell.contentView.frame.size。宽度 - 缩进点,cell.contentView.frame.size.height);)
- 您是否在 viewDidLoad 中使用“registerClass:forCellReuseIdentifier:”注册了 ExpandableTableViewCell? 希望对你有帮助。