1

我有一个 7 行的表格视图,我想单击我的行并加载 detailView( uiViewController )

我可以选择该行,我可以看到登录控制台,但它从不加载详细视图

请你给我一些点击,有什么问题?

#pragma mark - Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

[tableView deselectRowAtIndexPath:indexPath animated:YES];
NSLog(@"selected rows");

MyBookDetailView *c = [[MyBookDetailView alloc] init];

[self.navigationController popToRootViewControllerAnimated:NO];
[self.navigationController pushViewController:c animated:YES];
}

我也尝试 performSelectorOnMainThread 但它仍然是可点击的,我在加载我的视图控制器时遇到问题,我还在 - (void)viewDidLoad 方法中添加了委托,

提前致谢!

后期代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{


[tableView deselectRowAtIndexPath:indexPath animated:YES];
MyBookDetailView *c = [[MyBookDetailView alloc] initWithNibName:@"MyBookDetailView" bundle:nil];

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

}
4

1 回答 1

1

为什么要将所有带有导航控制器堆栈的控制器弹出到根控制器,同时又要推送新的 MyBookDetailView(我希望它的基类是 UIViewController)。

无论如何, MyBookDetailView *c = [[MyBookDetailView alloc] init];也不会为你工作。因为 UIViewController (MyBookDetailView) 视图的c对象为 nil。我建议使用断点跟踪执行堆栈和您尝试删除并在运行时添加的变量,您将更好地了解程序中发生了什么。

我认为以下代码可能对您有用,

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    MyBookDetailView *c = [[MyBookDetailView alloc] initWithNibName:@"WriteYourNibNameIfYouCreate" bundle:nil];

    [self.navigationController pushViewController:c animated:YES];
}
于 2013-10-03T18:08:34.000 回答