我在应用程序中有一个表视图,我希望应用程序的多个部分能够用于将更新发布到表视图,并提供用户可以执行的操作。我想到实现这个的方法之一是通过一个大的枚举,带有表视图的switch语句。在这种情况下,表视图将基于表格单元格的枚举值执行操作。这需要了解所涉及的课程,并且看起来过于复杂。
必须有更好的方法。是否可以使用具有UITableViewCell附件按钮目标的选择器?
我认为对于常规按钮和导航栏按钮,我可以这样做:
[thisIconBtn addTarget:self action:@selector(changeIconState:) forControlEvents:UIControlEventTouchUpInside];
是否有等效的方法将操作分配给 UITableView附件?或者我应该坚持使用大枚举?
谢谢你!答案 0 :(得分:6)
不幸的是,自{3.0}起,accessoryAction
的{{1}}已被弃用
来自UITableViewCell Reference Docs:
UITableViewCell
定义要调用的操作消息的选择器 当用户点击附件视图时。 (在iOS 3.0中已弃用。请改用 用于处理水龙头的accessoryAction
在细胞上。)
但,如果您的附件视图继承自tableView:accessoryButtonTappedForRowWithIndexPath:
(UIControl
等),您可以通过 UIButton
设置目标和操作方法。
这样的事情(根据您的需要进行修改):
addTarget:action:forControlEvents:
或者,更传统的路线(我不是肯定的,但我相信你的问题表明这是你要避免的。如果这是真的,你可以忽略这段代码。):
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:kCustomCellID];
if (!cell) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kCustomCellID] autorelease];
}
// Set the accessoryType to None because we are using a custom accessoryView
cell.accessoryType = UITableViewCellAccessoryNone;
// Assign a UIButton to the accessoryView cell property
cell.accessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
// Set a target and selector for the accessoryView UIControlEventTouchUpInside
[(UIButton *)cell.accessoryView addTarget:self action:@selector(someAction:) forControlEvents:UIControlEventTouchUpInside];
return cell;
}