我试图理解控制器之间的传递数据。我正在显示带有搜索和导航栏的桌面视图。当我选择其中一行时,它会打开另一个带有详细信息的控制器视图。但是,如果我在搜索后选择,它会打开相同的详细控制器视图两次。
这是我的行选择代码
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (tableView == self.searchDisplayController.searchResultsTableView) {
[self performSegueWithIdentifier: @"showRecipeDetail" sender: self];
}
}
问题可能是什么?
答案 0 :(得分:1)
如果您对单元格选择segue
,则不应该写
if (tableView == self.searchDisplayController.searchResultsTableView) {
[self performSegueWithIdentifier: @"showRecipeDetail" sender: self];
}
如果您需要推送差异VC
,您应该将VC从VC添加到VC,而不是UITableViewCell
。
并使用:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (tableView == self.searchDisplayController.searchResultsTableView) {
[self performSegueWithIdentifier: @"showRecipeDetail" sender: self];
}
else
{
[self performSegueWithIdentifier: @"showDifferentVC" sender: self];
}
}