次のように、選択した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値を割り当て、クリックするとテーブルビューを親として取得し、そのサブビュー(セル)を取得しようとしますそのタグ
[tag:indexpath.rowのあるTableviewビュー]