表格视图单元格作为按钮
Posted
技术标签:
【中文标题】表格视图单元格作为按钮【英文标题】:Table view cell as button 【发布时间】:2012-03-02 09:40:29 【问题描述】:我正在尝试将已分组的表格视图单元设置为按钮,但是我似乎无法在 XCode 4.2 的界面构建器中或以编程方式找到在哪里执行此操作。
我尝试将表格视图单元格链接到 IBAction,但它只允许我创建或链接到 IBOutlet。
作为临时修复,我在单元格中嵌入了一个矩形按钮,但按下时不会突出显示蓝色。
我在几个应用程序中看到了这项工作,一个例子是下面 Safari 应用程序中的清除历史记录和清除 Cookies 和数据按钮:
【问题讨论】:
【参考方案1】:想象一下你的 IBAction 是这样的:
-(IBAction)buttonPressed
//Do my stuff
那么,你应该在你的委托中这样做:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
//check if your cell is pressed
BOOL myCellIsPressed = ...
if(myCellIsPressed)
[self buttonPressed];
要检查您的单元格是否被按下,您有几种方法,例如,如果您知道表格中按钮所在的行:
int myCellRow = 5;
if (myCellRow == IndexPath.row) //YES!
或者你可以在你的单元格中放置一个标签,然后检查是否是那个:
#define myTag 5
创建单元格时:
UITableViewCell *myCell = ...
myCell.tag = myTag
在 didSelectRowAtIndexPath 中:
UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
if (selectedCell.tag == myTag) //YES!
【讨论】:
一个非常简单的问题,但是 didSelectRowAtIndexPath 如何知道实际按下了哪个单元格或行?我得到 BOOL 是为了检查它是否被按下,但它怎么知道是哪一个? 绝对精彩的回应,非常感谢 tonio。最后一个要明确的问题:IndexPath.row 是否代表用户所按下的内容?所以当你说 myCellRow == IndexPath.row 时,是不是说如果被按下的单元格称为 myCellRow 然后做点什么? 是的,就是这样!不客气,别忘了把答案标记为已解决,希望以后能帮到你!【参考方案2】:这些不是按钮.. 清除cookies等功能在处理 表视图委托方法
tableview : didselectRow
在那里您可以找到选择了哪个部分和哪一行,并据此执行功能。
【讨论】:
以上是关于表格视图单元格作为按钮的主要内容,如果未能解决你的问题,请参考以下文章