Проблема TableView ... Как узнать номер строки - PullRequest
0 голосов
/ 22 марта 2011

what I am doing

Я делаю проект, в котором я использую tableView.В этом табличном представлении у меня есть кнопка удаления в каждой строке.

what I want

Я хочу, чтобы при нажатии кнопки ... задержка составляла 1 секунду.и после этого строка должна быть удалена .. в это время задержки кнопка удаления строки, которую я нажала, должна быть скрыта.

My Problem

Ну, я могу это сделатьвещь, но есть проблема.Когда я нажимаю кнопку удаления любой строки ... скрывается только кнопка удаления последней строки ...

Root of the problem -According to my view
Ну, я назначил кнопку удаления в cellForRowAtIndexPath .. и у меня естьназначил для него метод ... когда я нажимаю кнопку ... метод вызывается ... в этом методе я сделал эту кнопку удаления скрытой ...

Я имею в виду, как он узнает, что в которомстрока, в которой кнопка удаления должна быть скрыта ...

My Question
Когда я нажимаю кнопку удаления, как узнать, в каком ряду следует скрывать .. Теперь он прячется каждый раз только в последней строке..

Предложение Pls ...

Ответы [ 5 ]

1 голос
/ 22 марта 2011

Используйте ниже в вашем tableView:cellForRowAtIndexPath методе.

[myButton addTarget:self
                             action:@selector(ButtonAction:)
                   forControlEvents:UIControlEventTouchUpInside];

myButton.tag = indexPath.row ;

реализуйте следующий метод,

-(void) ButtonAction:(id) sender
{
    UIButton* myButton = (UIButton*)sender;
    myButton.hidden = YES;

    //Delete the row at index (myButton.tag)

}

Я бы предложил вам использовать пользовательскую ячейку, а не использовать UITableViewCell напрямую.

0 голосов
/ 22 марта 2011

чтобы узнать номер строки, вы можете получить его по indexpath.row

0 голосов
/ 22 марта 2011

Попробуйте: сначала установите уникальный тег для каждой ячейки в функции cellForRowAtIndexPath:

    [cell setTag:10000+[[userInfo objectForKey:@"id"] intValue]];

После опеки для удаления используйте функцию, подобную этой:

-(void)deleteRow:(id)sender{
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[sender tag] inSection:0];
[YOURTABLEVIEW deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:0];  

}

Надеюсь, это решит вашу проблему.

0 голосов
/ 22 марта 2011

Вот еще один вариант, который не зависит от тегов:

-(void)buttonAction:(id)sender
{
    UIButton *button = (UIButton*)sender;
    UITableViewCell *cell = [[button superview] superview];
    [button setHidden:YES];
    [self.tableView performSelector:@selector(deleteCell:) withObject:cell afterDelay:0.5]

-(void)deleteCell:(UITableViewCell*)cell
{
    [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:cell] withRowAnimation:UITableViewRowAnimation{YourChoiceHere}
}
0 голосов
/ 22 марта 2011

Вероятно, вы можете попробовать установить тег для каждой кнопки удаления в качестве номера строки, а затем получить доступ к тегу в методе нажатия кнопки, чтобы узнать, какая кнопка была нажата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...