Передача значений из UIButton в UIActionSheet - PullRequest
0 голосов
/ 19 апреля 2010

Я пытаюсь отправить ActionSheet переменную с кнопки.

Я не могу использовать свойство tag, потому что оно используется для чего-то другого.

Я объявил myIndexRow как переменную экземпляра и имею:

NSInteger myIndexRow = indexPath.row;
    [deleteButton addTarget:self action:@selector(showDeleteSheet:) forControlEvents:UIControlEventTouchUpInside];

    deleteButton.myIndexRow = myIndexRow;

но я получаю 'Запрос на членство' myRow '- это не структура или объединение'

Здесь есть что-то очевидное, чего мне не хватает.

1 Ответ

1 голос
/ 20 апреля 2010

Никогда не думал, что я отвечу на свой вопрос о SO, но вот так:

Доступ к суперпредставлению суперпредставления и запрос к разделу indexPath и свойствам строки сделали свое дело.

В целевой кнопке:

-(void)showDeleteSheet:(id)sender {

NSIndexPath *indexPath = [table indexPathForCell:(UITableViewCell *)[[sender superview] superview]];

    NSInteger currentSection = indexPath.section;
    NSInteger currentIndexRow = indexPath.row;

    //form the actionSheet
    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Delete this item?" 
                                                         delegate:self 
                                                cancelButtonTitle:@"Cancel" 
                                           destructiveButtonTitle:@"Delete" 
                                                otherButtonTitles:nil];                         
    actionSheet.tag = currentIndexRow;
    actionSheet.actionSheetStyle = UIActionSheetStyleDefault;
    [actionSheet showInView:self.view];
    [actionSheet release];
}

Затем в методе actionSheet clickedButtonAtIndex я получаю нужную строку:

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {

     if (buttonIndex == 0)
        { ... doSomethingWith: actionSheet.tag }
     else
        { ... user pressed cancel }
}

Часть ответа была найдена в другом посте и , а остальные здесь

...