我正在使用UITableViewCell
开发iOS App。
点击UITableViewCell
并转到另一个segue
的屏幕时,indexPathForSelectedRow
始终为所选的部分和行返回0。
我的代码正在关注。
你能告诉我如何解决这个问题吗?
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 2;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if(section == 0) {
return 3;
}
else if(section == 1) {
return 2;
}
return 0;
}
- (CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 50.0;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *cellIdentifer = @"editCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifer forIndexPath:indexPath];
if(cell==nil){
cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifer];
}
UITextView *editText = (UITextView *)[cell viewWithTag:1];
if(indexPath.section == 0) {
if(indexPath.row == 0) {
editText.text = @"aaa";
} else if(indexPath.row == 1){
editText.text = @"bbb";
} else {
editText.text = @"ccc";
}
}
else if(indexPath.section == 1) {
if(indexPath.row == 0) {
editText.text = @"ddd";
} else if(indexPath.row == 1){
editText.text = @"eee";
}
}
return cell;
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"editDetail"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSLog(@"a%d",indexPath.section);
NSLog(@"b%d",indexPath.row);
}
答案 0 :(得分:1)
查看您的代码,您将失踪;
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
执行此方法的转换,您可以直接访问indexPath
答案 1 :(得分:0)
您可能已在代码中的某处取消选择行。最有可能采用didSelectRowAtIndexPath
方法。取消选择刚刚选择的行是一种常见做法。如果取消选择该行,当您尝试获取indexPath.row时,这将导致您在prepareForSegue
方法中获得0。