iPad 上的 UITableViewCell indexPath.section 问题
Posted
技术标签:
【中文标题】iPad 上的 UITableViewCell indexPath.section 问题【英文标题】:UITableViewCell indexPath.section issue on iPad 【发布时间】:2014-01-17 15:52:16 【问题描述】:我正在尝试在第 8 行的单元格文本旁边添加一个图像。我的问题是它没有进入(indexPath.row == 9)
方法,而我已经放置了断点,我从indexPath.row = length = 2, path = 0 - 0
获得了这个值。那么请问我的问题在哪里?
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
return 1;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
return [data count];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if (!cell)
cell = [[[UITableViewCell alloc] initWithStyle:(UITableViewCellStyleValue1) reuseIdentifier:@"cell"] autorelease];
UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bakiyem-cell-bg.png"]];
img.x = 10.;
img.y = -6.;
[cell.contentView addSubview:img];
[img release];
//
cell.textLabel.font = [Constants regularFontWithSize:24.];
cell.textLabel.textColor = [Constants textGrayColor];
cell.detailTextLabel.font = [Constants mediumFontWithSize:24.];
cell.detailTextLabel.textColor = indexPath.row == 4 ? [UIColor colorWithRed:218./255. green:0 blue:37./255. alpha:1] : [Constants textGrayColor];
//My issue
if (indexPath.row == 9)
cell.imageView.image = [UIImage imageNamed:@"info-logo.png"];
//
NSDictionary *dic = [data objectAtIndex:indexPath.row];
cell.textLabel.text = [dic objectForKey:@"value1"];
cell.detailTextLabel.text = [dic objectForKey:@"value2"];
return cell;
【问题讨论】:
【参考方案1】:应该是这样的
if (indexPath.row == 7)
因为你只有一排。
如果断点仍未进入您的 if 语句,则在其周围添加更多日志以查看发生了什么。
如果你试试怎么样
NSLog(@"row = %i", indexPath.row);
if (indexPath.row == 7)
NSLog(@"In if statement for row = %i", indexPath.row);
UIImage *myImage = [UIImage imageNamed:@"info-logo.png"];
NSLog(@"My image=%@",myImage);
cell.imageView.image = myImage;
NSLog 中显示了什么?
【讨论】:
从row=0到row=9 那么你得到 row=7 吗?然后你应该输入 if 块。尝试在那里也使用 NSLog。 它开始在if
语句中传递。我不知道为什么以及如何?
因此,如果您更新以添加我刚刚在答案中添加的 NSLog - 您是否将该语句记录在 if 块中?
是的,这很有趣!!【参考方案2】:
八行的索引为 7
您的意思可能是indexPath.row
而不是indexPath.section
如果要自定义UITableViewCell
s,请使用自定义单元格
【讨论】:
我试过'indexPath.row',但没用。我现在也使用了断点,我得到了length = 2, path = 0 - 0
。
我不想自定义整个单元格,我只想在其中一行中放一张图片。【参考方案3】:
试试indexPath.section == 7
。或者可能indexPath.row == 7
Cem 在评论中写道。
【讨论】:
我尝试了不同的数字,但没有任何图像。 @Cem 你有多少个部分?我想你的意思可能是 `if (indexPath.row == 9)`(或者 7,如 user2509601 所说。) @Cem 你的配置如何 --(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
和- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
@Cem 所以你必须使用indexPath.row == 7
。然后首先在 if 语句中使用 NSLog
尝试它。因此,如果它进入 if 语句,您还可以借助断点检查 UIImage
是否不是 nil
。
没有进入if
statment :|【参考方案4】:
您是在 1 节内有 9 行,还是 9 节在每个节中 1 行?
对于第一种情况,请使用: - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 返回 1 ;
(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 如果(部分==0) 返回 9;对于第二种情况;
(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 返回 9 ;
(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 返回 1;另外,在 cellForRowAtIndexPath 方法中使用:
在第一种情况下:indexPath.row==9 第二种情况:indexPath.section==0
【讨论】:
【参考方案5】:您应该在以下方法中至少有 9 行是数据数组,并且 indexPath.row = length = 2, path = 0 - 0 表示您在第 0 部分的第 0 行。如果您以行数方法返回硬代码 9,那么它将输入 (indexPath.row == 8)
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section return [data count];
【讨论】:
以上是关于iPad 上的 UITableViewCell indexPath.section 问题的主要内容,如果未能解决你的问题,请参考以下文章
自定义 UITableViewCell 在 iPad 上的宽度错误
从 uitableviewcell 内的文本字段中关闭 iPad 上的键盘
iPad 上的 UITableViewCell indexPath.section 问题
自定义 UITableViewCell 元素仅出现在 iPad 上
在 iPad 上旋转 UITableView 后,UITableViewCell 附件未正确定位
添加到 UITableViewCell 的 contentView 的 UITextField 在 Popover 中无法正确显示(iPad、iOS 4.2)