详细信息的重定向VC 在 Xcode 7 中无法点击 UITableView 的 Cell

Redirection for detailsVC is not working on click of UITableView's Cell in Xcode 7

我正在尝试按照此 (https://www.appcoda.com/use-storyboards-to-build-navigation-controller-and-table-view/) 教程制作一个简单的 iOS 应用程序,但是当我尝试单击列出的项目时,我没有被重定向到详细信息查看并停留在同一页面上。我对同时使用 Xcode(我正在使用 Xcode 7)和 objective-C 还很陌生,所以我不知道自己在做什么。任何形式的帮助都将是非常可观的。

在 appCoda 中,他们使用 segue 进行推送,因此您可能不会在您的项目中添加此代码,

  - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
  {
     if ([segue.identifier isEqualToString:@"segue_Key"]) {
      DetailViewController *nextVC = [segue destinationViewController];

    }
}
  - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
 {
    [self performSegueWithIdentifier:@"segue_Key" sender:self];
  }

如果您在 segue 中遇到问题,请从故事板中删除 segue 连接并使用以下代码,

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
         DetailViewController *obj = (DetailViewController *) [self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"]; // Identifier must match with the storyboard VC ID, else project git crashed.

        [self.navigationController pushViewController:obj animated:YES];

    }

如果你已经这样做了,请告诉我。

如果您不想使用 segue,您应该通过代码创建目标控制器:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    destinationcontroller *loading = (destinationcontroller *)[self.storyboard instantiateViewControllerWithIdentifier:@"destinationcontroller"];
    [self.navigationController pushViewController:loading animated:YES];
}

遵循此代码:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
       [self performSegueWithIdentifier:@"Your Segue Name" sender:self];

}

pragma 标记 - 导航

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.

if ([segue.identifier isEqualToString:@"Your Segue Name"]) {
    DetailViewController *vc= (DetailViewController *)segue.destinationViewController;
    NSIndexPath *indexPath = [tableview indexPathForSelectedRow];
    vc.(DetailViewController Object)= [(Your tableView Array name) objectAtIndex:indexPath.row];
    }
}

在你的例子中,故事板 ID 是 RecipeBookViewController

您必须为该视图控制器设置 Storyboard ID,如下所述。

GO 在 Xcode 实用工具中点击 Identity Inspector 并设置

故事板 ID = RecipeBookViewController

有关更多说明,请参阅图像,并针对 Storyboard ID 添加 RecipeBookViewController