Проблемы с отправителем UITablewView и IBAction

у меня есть две совершенно одинаковые проблемы 1) у меня есть UIButton в ячейке, которая вызывает IBAction:

    - (IBAction)deleteFriend:(id)sender
{


CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self->table];

NSIndexPath *indexPath = [self->table indexPathForRowAtPoint:buttonPosition];
if (indexPath != nil)
   {
    UITableViewCell *cell = [self->table cellForRowAtIndexPath:indexPath];

    [UIView animateWithDuration:0.3 animations:^{

        cell.alpha = 0;
    } completion: ^(BOOL finished) {
        cell.hidden = YES;
        button.hidden = YES;


    }];
}

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

2) Здесь в коде я говорю ячейке (ячейка в IBAction) скрыть, а также кнопку, которую я определил в cellforRowatIndexPath:

button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setBackgroundImage:buttonImage forState:UIControlStateNormal];
button.frame = CGRectMake(272.0f, 15.0f, 30.0f, 30.0f);
[cell button];
[button addTarget:self action:@selector(deleteFriend:)
              forControlEvents:UIControlEventTouchUpInside];

но каким-то образом он случайно скрывает другую кнопку в других ячейках. Почему, черт возьми, он просто не прячется в одной ячейке?

заранее спасибо !


person Community    schedule 13.06.2013    source источник
comment
Я хотел бы помочь вам, но я не могу понять описание вашей проблемы. Это две проблемы? Что такое ячейка во втором выпуске? Постарайтесь быть более ясным.   -  person pasine    schedule 13.06.2013
comment
есть две проблемы: в первом это ячейка, определенная отправителем, а во втором я просто определяю кнопку в cellForRowAtIndexPath, но я скрываю эту кнопку в своем IBAction выше   -  person    schedule 13.06.2013
comment
Есть ли причина, по которой вы не можете программно использовать индекс ячейки и манипулировать кнопкой только в этой ячейке?   -  person Dan    schedule 13.06.2013
comment
потому что я запускаю действие нажатием кнопки, которая запускает ibaction, где у меня нет ячейки, объявленной в методе   -  person    schedule 13.06.2013
comment
Ваши вопросы трудно понять. Вы хотите, чтобы при нажатии кнопки появлялось всплывающее окно alertView?   -  person LAMBORGHINI    schedule 14.06.2013
comment
Да, как уведомление о подтверждении. Но я хочу, чтобы отправитель знал, на какую ячейку я нажал в методе buttonIndex UIAlertView. Вы хотите, чтобы я переписал весь вопрос?   -  person    schedule 14.06.2013
comment
У вас есть идея для UIAlertView?   -  person    schedule 14.06.2013


Ответы (1)


Вот что нужно сделать: Создайте подкласс UITableViewCell, затем создайте nib-файл ячейки, в классе tableviews вам нужно будет добавить это в метод viewDidLoad.

UINib *nib = [UINib nibWithNibName:@"TableViewCell" bundle:nil]; 
[[self tableView] registerNib:nib forCellReuseIdentifier:@"CustomCell"]; 

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

в вашем классе tableviews вот код для использования

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {


TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCell"];
if (cell == nil) {
    cell = [[TableViewCell alloc] init]; // or your custom initialization
}


cell.name.text=[myName];
return cell;
}
person Phil Scarf    schedule 13.06.2013
comment
Я не использую аксессуар, это просто кнопка в ContentView - person ; 14.06.2013
comment
Этот метод используется для аксессуаров, он использует UIButton, а не аксессуар. - person LAMBORGHINI; 14.06.2013
comment
Хорошо, тогда как насчет того, чтобы создать отдельный класс для ячейки и иметь там метод Action с тем, что вы хотите @RaphMaz - person Phil Scarf; 14.06.2013
comment
Вот что нужно сделать: Создайте подкласс UITableViewCell, затем создайте nib-файл ячейки, в класс tableviews вам нужно будет добавить UINib *nib = [UINib nibWithNibName:@TableViewCell bundle:nil]; [[self tableView] registerNib:nib forCellReuseIdentifier:@CustomCell]; Создайте метку, изображение, кнопку и т. д., поместите метод действия в класс ячеек и сделайте там все, что вы хотите. - person Phil Scarf; 14.06.2013
comment
Это выглядит довольно хорошо, я думаю. Я даже не уверен, что понимаю, как это использовать, но я попробую, спасибо! - person ; 14.06.2013
comment
Как создать подкласс? Я могу использовать это и для проблемы UIAlertView? - person ; 14.06.2013
comment
Я не уверен в предупреждении, я так думаю, но все, что вам нужно сделать, это перейти к новому файлу, а затем щелкнуть UITableViewCell и назвать его как хотите, а затем просто создать новый файл, новый пустой наконечник и перетащить ячейку tableview в нее, затем установите идентификатор повторного использования при проверке и установите класс ячейки в nib, чтобы он был тем, что вы назвали классами ячеек за шаг до @RaphMaz - person Phil Scarf; 14.06.2013