Подтвердить что ты не робот

IOS, Как найти выбранную строку UITableView?

Я пытаюсь найти выбранный UITableViewCell следующим образом:

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

  }
    if   ([indexPath row] == [tableView cellForRowAtIndexPath:indexPath.row]) // i want to place value of selected row to populate the buttons 

        //([indexPath row] == 0)

        //(indexPath.row == ![self cellIsSelected:indexPath]) 

    {
        UIButton *AddComment = [UIButton buttonWithType:UIButtonTypeCustom]; // custom means transparent it takes shape same with backgroup image

        [AddComment addTarget:self 
                       action:@selector(TestBtns:)
             forControlEvents:UIControlEventTouchDown];

        // [AddComment setTitle:@"1" forState:UIControlStateNormal];

        AddComment.frame = CGRectMake(9.0, 128.0, 96.0, 26.0);

        [cell.contentView addSubview:AddComment];

        UIImage *buttonAddComment = [UIImage imageNamed:@"addcomment.png"];

        [AddComment setBackgroundImage:buttonAddComment forState:UIControlStateNormal];

        [cell.contentView addSubview:AddComment]; 


    }

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

4b9b3361

Ответ 1

NSIndexPath *selectedIndexPath = [tableView indexPathForSelectedRow];

Ответ 2

Используйте этот делегат метод UITableView

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   NSLog(@"%d", indexPath.row); // you can see selected row number in your console;
}

Ответ 3

в делегате UITableViewDataSource существует метод - (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath.

Он возвращает объект NSIndexPath, который содержит как выделенный раздел, так и выбранную строку.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    NSLog(@"Selected section>> %d",indexPath.section);
    NSLog(@"Selected row of section >> %d",indexPath.row);
}

Обязательно установите источник данных tableview перед его использованием, иначе этот метод не будет называться

Ответ 4

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    int a = indexPath.row;
    NSLog(@"index: %i",a);
}

Ответ 5

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

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // you can use "indexPath" to know what cell has been selected as the following
    NSLog(@"Selected row is %@", indexPath);
}

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

Надеемся, что вы сочтете это полезным

Ответ 6

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

Чтобы знать это во время назначения каждой ячейки, присвойте значение indexpath.row в качестве тега созданной ячейки, а затем щелкнув, возьмите представление таблицы в качестве родителя и попытайтесь получить его подвью ( ячейка) с этим тегом

[Просмотр таблицы с тегом: indexpath.row]