Когда радио кнопка нажата - PullRequest
       2

Когда радио кнопка нажата

1 голос
/ 11 октября 2011

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

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

Заранее спасибо.

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if(cell==nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];


        UIImageView *backGroundImageView=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"History_strip_bg1.png"]];
        [cell.contentView addSubview:backGroundImageView];
        [backGroundImageView release];

        cell.accessoryView=[[ UIImageView alloc ]initWithImage:[UIImage imageNamed:@"arrow2.png"]];
        if(doneBtnFlag)
        {

            radioBtn = [UIButton buttonWithType:UIButtonTypeCustom];
            [radioBtn setImage:[UIImage imageNamed:@"radio_button_1.png"] forState:UIControlStateNormal];
            [radioBtn setImage:[UIImage imageNamed:@"radio_button_selected.png"] forState:UIControlStateSelected];
            [radioBtn setFrame:CGRectMake(2, 17, 25, 25)];
            [cell.contentView addSubview:radioBtn];
            [radioBtn addTarget:self action:@selector(radioButtonClicked:event:) forControlEvents:UIControlEventTouchUpInside];
            radioBtn.tag = 1;

        }


        btn=(UIButton*)[cell.contentView viewWithTag:1];
}
    return cell;

}






- (IBAction)radioButtonClicked:(id)sender event : (id)event
{
    btn.selected = YES;

    rightBtn.enabled =YES;
    NSSet *touches = [event allTouches];
    UITouch *touch = [touches anyObject];
    CGPoint currentTouchPosition = [touch locationInView:contactsTblView];
    NSIndexPath *indexPath = [contactsTblView indexPathForRowAtPoint: currentTouchPosition];


    NSLog(@"indexPath %@",indexPath);
}

1 Ответ

1 голос
/ 11 октября 2011

У этого кода есть несколько проблем.

1)

Вы не обрабатываете случай, когда [tableView dequeueReusableCellWithIdentifier] фактически возвращает допустимую ячейку для использования, и вместо этого вы выполняете работу, только если «cell == NULL».

Бьюсь об заклад, если вы установите точки останова и посмотрите (или NSLog из значения) indexPath.row, вы увидите, что код в случае "cell == NULL" вызывается только спорадически.

2)

Для чего используется "btn"?Вы назначаете это и затем ничего не делаете с этим.

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