目标C:如何使用addTarget:action:forControlEvents:方法?

Zhe*_*hen 10 events objective-c uipicker ios

我试图在UIPicker的数据发生变化(实时更新)后立即更新表格单元格中显示的日期和时间.我实现了以下代码.尽管更改了选择器中的值,但仍未调用我的"更新"方法.任何人都可以建议吗?谢谢!

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    NSUInteger row = [indexPath row];
    if (row == 0) 
    {
        self.picker.hidden = NO;

        [self.picker addTarget:self action:@selector(updateDate) forControlEvents:UIControlEventTouchUpInside];

    }

}

- (void)updateDate
{
    selectedDate = [self.picker date];
    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
    [formatter setDateFormat:@"dd-MM-yyyy HH:mm"];

    selectedDateString = [formatter stringFromDate:selectedDate];

    [tableView reloadData];
}
Run Code Online (Sandbox Code Playgroud)

csa*_*ano 16

您需要在选择器名称后面添加冒号.

[self.picker addTarget:self action:@selector(updateDate:) forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)

此外,updateDate方法应采用id类型的对象.

- (void) updateDate:(id) obj { }
Run Code Online (Sandbox Code Playgroud)

  • @Rickster你是对的,参数是可选的.但是,如果在选择器中指定了冒号并在方法中指定了参数,则该参数将是设置目标的对象. (2认同)