Цель C: Как использовать addTarget: action: forControlEvents: метод? - PullRequest
10 голосов
/ 19 мая 2011

Я пытаюсь обновить дату и время, отображаемые в ячейке таблицы, сразу после изменения данных UIPicker (обновление в реальном времени).Я реализовал следующий код.Мой метод "update" не вызывается, несмотря на изменение значений в средстве выбора.Кто-нибудь может посоветовать?Спасибо!

Жен

- (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];
}

Ответы [ 2 ]

16 голосов
/ 19 мая 2011

Вам необходимо поставить двоеточие после имени селектора.

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

Кроме того, метод updateDate должен принимать объект типа id.

- (void) updateDate:(id) obj { }
2 голосов
/ 19 мая 2011

измените свой код -

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

на

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

вы также можете обрабатывать его в делегатах UIPicker.

...