我的应用程序完全适用于模拟器和iPhone OS 2.2.1设备。 但我也有安装了iPhone OS 3.0的设备。当我点击公开按钮时,未调用accessoryButtonTappedForRowWithIndexPath方法,但公开按钮的颜色变暗。
有人遇到过这样的问题吗?
我该如何解决这个问题?
答案 0 :(得分:1)
现在OS 3.0正式出现了:
问题在于UITableViewCell的accessoryType属性。改为使用tableView:accessoryTypeForRowWithIndexPath:delegate方法,只要你的目标是OS 2.x和OS 3.x.
答案 1 :(得分:0)
不幸的是,“accessoryTypeForRowWithIndexPath”已被弃用。
不同行为的线索(在UITableViewCellAccessoryDisclosureIndicator和UITableViewCellAccessoryDetailDisclosureButton之间)是披露指示器不“跟踪”,而披露按钮确实“跟踪”。
您需要做的是提供您自己对用户在单元格中点击的位置的识别,并将其用作附加代码的一部分,然后调用您的
- (void)tableView:(UITableView*) tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath*) indexPath
例程 - 这是披露BUTTON所发生的事情。
您可能希望在自定义单元格中使用附加到AccessoryView的UITapGestureRecognizer之类的内容。这个东西通常是NIL,所以你需要通过IB或者以编程方式将UIView添加到单元格中 - 调整它的大小 - 并将它连接到你的单元格对象。然后,您将向自定义单元格的- (id)initWithStyle:(UITableViewCellStyle) style reuseIdentifier:(NSString*) reuseIdentifier
函数添加一些代码。
总体思路如下所示。
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc]
initWithTarget:myAccessoryView action:@selector(didTap:)];
tapGesture.delegate = (id <UIGestureRecognizerDelegate>)myTableViewControllerDelegate;
[containerView addGestureRecognizer:tapGesture];
[tapGesture release];
'didTap:'函数会转发您的代码,或者只是执行您在其他例程中可能执行的操作。
令人遗憾的是,三种不同的配件被区别对待。所以,如果你不想在你的单元格中有一个巨大的蓝色东西,看起来你必须提出一些额外的代码来让事情按照你的意愿工作。
在自定义单元格中使用AccessoryView的一个好处是,您可以在视图中放置UIImageView,然后在UIImageView中存放图像 - 这意味着您可以使用任何图像而不是简单的披露“&gt;”。