我添加自定义按钮,我UITableViewCell。在该按钮的操作我想打电话showAlert:函数和要传递细胞标记的方法。

如何传递一个参数在此showAlert方法:action:@selector(showAlert:)

有帮助吗?

解决方案

这是不可能的。必须创建符合IBAction为一种方法

- (IBAction)buttonXYClicked:(id)sender;

在该方法中,可以创建和调用UIAlertView中。不要忘记按钮与在界面生成器的方法进行连接。

如果你喜欢多个按钮之间进行区分(例如,您有一个在每个表格单元)可以设置按钮的标签属性。然后检查sender.tag从哪个按钮的点击来。

其他提示

如果你在Tableviewcell使用按钮然后u必须标签值添加到每个细胞上的按钮,用ID作为参数设定的方法addTarget。

示例代码:

您必须在cellForRowAtIndexPath方法类型下面的代码。

{

     // Set tag to each button
        cell.btn1.tag = indexPath.row; 
        [cell.btn1 setTitle:@"Select" forState:UIControlStateNormal];  // Set title 

     // Add Target with passing id like this
        [cell.btn1 addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];    


     return cell;

}

-(void)btnClick:(id)sender
{

    UIButton* btn = (UIButton *) sender;

     // here btn is the selected button...
        NSLog(@"Button %d is selected",btn.tag); 


    // Show appropriate alert by tag values
}

周杰伦的答案是伟大的,但如果你有多个部分,它不会工作,因为indexRow是的本地的部分

的另一种方法,如果使用的是在TableView中具有多个区段的按钮,是传递的触摸事件。

如果你在一个延迟加载声明您的按钮:

- (UIButton *)awesomeButton
{
    if(_awesomeButton == nil)
    {
        _awesomeButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        [_awesomeButton addTarget:self.drugViewController action:@selector(buttonPressed:event:) forControlEvents:UIControlEventTouchUpInside];
    }

    return _awesomeButton;
}

这里的关键是链中的事件到所述选择器的方法。你可以不通过自己的参数,但是你可以传递的事件。

在功能按钮钩住:

- (void)buttonPressed:(id)sender event:(id)event
{
    NSSet *touches = [event allTouches];
    UITouch *touch = [touches anyObject];

    CGPoint currentTouchPosition = [touch locationInView:self.tableView];
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint: currentTouchPosition];

    NSLog(@"Button %d was pressed in section %d",indexPath.row, indexPath.section);
}

这里的关键是函数indexPathForRowAtPoint。这是UITableView一个极好的功能,这将使你在任何时候indexPath。同样重要的是功能locationInView因为你需要在的tableView的背景下,触摸,因此可以精确定位具体indexPath。

这将让你知道这是哪个按钮,在具有多个部分的表。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top