2012-03-02 79 views
4

我想设置一个表格视图单元格已被分组,作为一个按钮,但我似乎无法找到在XCode 4.2或编程方式在界面生成器中的位置。表视图单元格作为按钮

我试过将表格视图单元连接到IBAction,但它只允许我创建或链接到IBOutlet。

作为一个临时修复,我在单元格中嵌入了一个矩形按钮,但按下时不会突出显示蓝色。

我见过几个应用程序这项工作,一个例子是在下面的Safari浏览器的应用程序清除历史记录,并清除Cookies和数据按钮:

enter image description here

回答

10

试想一下,你的IBAction为是这样的:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    //check if your cell is pressed 
    BOOL myCellIsPressed = ... 

    if(myCellIsPressed) 
     [self buttonPressed]; 
} 

要检查是否已按下你的,你有几种方式,为:

-(IBAction)buttonPressed{ 
//Do my stuff 
} 

然后,你应该在你的委托做到这一点例如,如果您知道表格中的按钮行:

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! 
+0

一个很简单的问题,但如何在didSelectRowAtIndexPath方法知道哪个小区或行被实际按下?我得到的BOOL是检查它是否被按下,但它怎么知道哪一个? – jcrowson 2012-03-02 10:24:52

+1

让我编辑我的答案 – 2012-03-02 10:30:27

+0

绝对的辉煌回应,非常感谢tonio。最后一个问题要清楚:IndexPath.row代表用户按下了什么?所以当你说myCellRow == IndexPath.row时,是在说被按下的单元格叫做myCellRow,然后做些什么? – jcrowson 2012-03-02 10:47:46

1

这些都不按钮.. 的清晰饼干和其他东西的函数在 表视图委托方法进行处理

tableview : didselectRow 

在此可以找到选择了哪个部分,并且行和执行功能BAS编辑。

相关问题