three20当我在TTTableSubtitleItem上使用didSelectObject时,如何显示Disclosure按钮

时间:2011-04-08 11:22:31

标签: iphone three20

我使用TTTableSubtitleItem来创建表格的单元格。然后我使用didSelectObject将对象发送到详细视图控制器。为防止邮件被发送两次,我必须将TTTableSubtitleItem URL设置为nil。因此,Disclosure Button不会显示?

    [TTTableSubtitleItem itemWithText:[chunks objectAtIndex: 0] 
                                 subtitle:@"Link To Website"
                                 imageURL:@""
                             defaultImage:[UIImage imageNamed:@"map.png"]
                                      URL:nil 
                             accessoryURL:@"http://www.google.com"];

1 个答案:

答案 0 :(得分:1)

我有同样的问题,我解决这个问题的方法是通过子类化项目单元格(所以对于你来说它是TTTableSubtitleItemCell并覆盖setObject方法以手动将公开按钮包含为遵循:

- (void)setObject:(id)object {
if (_item != object) {
  [_item release];
  _item = [object retain];

  [super setObject:object];

  self.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}

我也使用这种方法让自己的选择样式仍然是蓝色,即使我没有以预期的方式处理URL。这也可以通过添加

来实现
  self.selectionStyle = UITableViewCellSelectionStyleBlue;

在另一个电话之后。

请注意,您还需要在数据源中添加您关注的项目与此新自定义项目单元格之间的映射。这需要覆盖自定义数据源中的一个方法。如果您希望所有TTTableSubtitleItem都有披露按钮,则可以将TTTableSubtitleItem映射到新的自定义项目单元格。否则,只需创建TTTableSubtitleItem的自定义子类,它不会对其进行任何更改。假设您的两个新子类是CustomItemCustomItemCell,您的数据源将覆盖以下方法,如下所示:

- (Class)tableView:(UITableView *)tableView cellClassForObject:(id)object {
  if ([object isKindOfClass:[CustomItem class]]) {
    return [CustomItemCell class];
  } else {
    return [super tableView:tableView cellClassForObject:object];
  }
}

希望这有帮助