我有一个UITableviewController
,当选择一行时,我想回弹到我的rootViewController
并让它在表格视图中显示该行的文本。现在正在发生的事情是我的常规视图控制器中的viewWillAppear
在调用popToRootViewController
函数之前被调用,所以当它进入常规视图控制器时它不会显示文本。我也尝试过使用viewDidAppear
但它不起作用。这是我尝试过的代码:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"row was selected");
user[@"school"] = [[_objects objectAtIndex:indexPath.row] objectForKey:@"title"];
[[PFUser currentUser] saveInBackground];
[self.navigationController popToRootViewControllerAnimated:YES];
}
然后在常规视图控制器中:
- (void)viewWillAppear:(BOOL)animated
{
NSLog(@"will appear ran");
PFUser *currentUser = [PFUser currentUser];
self.userSchoolLabel.text = currentUser[@"school"];
}
我在控制台中看到的是打印出来
"will appear ran"
然后 “行被选中”
如何解决这个问题,如果我通过触摸另一个视图控制器上的按钮调用方法popToRootViewController
它工作正常,问题是选择一行,我不知道为什么?< / p>
提前感谢您的帮助。我真的很感激。
答案 0 :(得分:0)
事件处理是Delegate方法的一部分。您的数据源似乎是正确的,因为它显示了您的行。因此,您可能没有正确设置tableview的委托。如果您正在使用nib,则连接tableview的委托,或者如果您使用代码绘制tableview,只需检查_yourtable.delegate = self;是否设定。
另一个原因可能是如果在tableview单元格中有uiview,那么它可以将你的rowselection事件带走。
另外,如果您在tableview中设置了编辑功能,则可能无法调用didSelectRowAtIndex:方法...有关详细信息,请参阅here