我使用UITableViewCellAccessoryDisclosureIndicator
作为accessoryType
的{{1}}。根据Apple的文档,数据源方法
UITableViewCell
应该自动被调用。
如果单元格已启用且附件类型为UITableViewCellAccessoryDetailDisclosureButton,则附件视图将跟踪触摸,并在点击时向数据源对象发送tableView:accessoryButtonTappedForRowWithIndexPath:message。
这是我的代码:
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
数据源方法只是一个- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
[cell.textLabel setText:[datasource objectAtIndex:indexPath.row]];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
return cell;
}
,但没有打印出来......
我错过了什么吗? (当然,数据源和代理设置正确)
答案 0 :(得分:17)
答案在你的问题中。你说
我正在使用UITableViewCellAccessoryDisclosureIndicator accessoryType ...
你引用了Apple文档的部分内容
如果单元格已启用且附件类型为UITableViewCellAccessoryDetailDisclosureButton ...
只有在使用UITableViewCellAccessoryDetailDisclosureButton
时才会调用委托方法。当然,区别在于这是一个按钮,UITableViewCellAccesssoryDisclosureIndicator
不是。当你使用后者时,点击它就像敲击细胞本身一样。你可以创建一个自定义单元格并实现hitTest:
以确定点击是否“接近”披露指标,但这似乎比必要的工作更多(除非你真的不希望使用详细披露按钮)。
答案 1 :(得分:0)
查看附件指示器的名称UITableViewCellAccessoryNone,
UITableViewCellAccessoryDisclosureIndicator,
UITableViewCellAccessoryDetailDisclosureButton
UITableViewCellAccessoryCheckmark,
UITableViewCellAccessoryDetailButton
仅详细按钮和详细信息显示按钮接收点击并调用方法。 U可以使用UIGestureRecognizer和自定义方法。