详细信息的重定向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
我正在尝试按照此 (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