Ответ 1
NSIndexPath *selectedIndexPath = [tableView indexPathForSelectedRow];
Я пытаюсь найти выбранный 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];
}
Как добиться этого, можете ли вы, пожалуйста, направить меня, где я делаю ошибку.
NSIndexPath *selectedIndexPath = [tableView indexPathForSelectedRow];
Используйте этот делегат метод UITableView
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"%d", indexPath.row); // you can see selected row number in your console;
}
в делегате 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 перед его использованием, иначе этот метод не будет называться
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
int a = indexPath.row;
NSLog(@"index: %i",a);
}
Вот встроенный метод, который поможет вам определить, какая ячейка была выбрана.
- (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, вы, вероятно, просто должны его раскомментировать.
Надеемся, что вы сочтете это полезным
Я думаю, что вы пытаетесь сделать, чтобы не щелкнуть индекс ячейки таблицы просмотра, а узнать, какая ячейка нажата.
Чтобы знать это во время назначения каждой ячейки, присвойте значение indexpath.row в качестве тега созданной ячейки, а затем щелкнув, возьмите представление таблицы в качестве родителя и попытайтесь получить его подвью ( ячейка) с этим тегом
[Просмотр таблицы с тегом: indexpath.row]