Iphone uitableView didSelectRowAtIndexPath“;所选行未加载详图视图;
我有一个包含7行的表视图,我想单击我的行并加载detailView(uiViewController) 我可以选择行,我可以在控制台中看到日志,但它从不加载详细视图 你能给我一些提示吗?有什么问题吗Iphone uitableView didSelectRowAtIndexPath“;所选行未加载详图视图;,iphone,objective-c,ios5,uiviewcontroller,uitableview,Iphone,Objective C,Ios5,Uiviewcontroller,Uitableview,我有一个包含7行的表视图,我想单击我的行并加载detailView(uiViewController) 我可以选择行,我可以在控制台中看到日志,但它从不加载详细视图 你能给我一些提示吗?有什么问题吗 #pragma mark - Table view delegate - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselect
#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];
}
为什么要将navigationcontroller堆栈弹出到根控制器,同时要弹出新的MyBookDetailView(我希望它的基类是UIViewController) 无论如何,
MyBookDetailView*c=[[MyBookDetailView alloc]init]代码>也不适用于您。因为UIViewController(MyBookDetailView)视图的c对象为零。我建议使用断点跟踪执行堆栈和试图删除的变量,并在运行时添加这些变量,这样可以更好地了解程序中发生了什么
我认为以下代码可能适合您
- (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];
}
为什么要将navigationcontroller堆栈弹出到根控制器,同时要弹出新的MyBookDetailView(我希望它的基类是UIViewController)
无论如何,MyBookDetailView*c=[[MyBookDetailView alloc]init]代码>也不适用于您。因为UIViewController(MyBookDetailView)视图的c对象为零。我建议使用断点跟踪执行堆栈和试图删除的变量,并在运行时添加这些变量,这样可以更好地了解程序中发生了什么
我认为以下代码可能适合您
- (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];
}
你能检查两件事吗:1。是否调用MyBookDetailView上的viewDidLoad方法?2.删除以下语句后是否可以重试:[self.navigationController popToRootViewControllerAnimated:NO];弹出并推到一起。如果navigationController不是nil。我建议操纵navigationController的viewControllers堆栈,以便一次处理它。@AC1我将NsLog放在ViewDiLoad MyBookDetailView上,但它从未打印过它,我还删除了此语句[self.navigationController popToRootViewControllerAnimated:NO];但是什么也没发生。很可能你的self.navigationController是零。你能核实一下吗?你自己是否嵌入了导航控制器?你能检查两件事吗:1。是否调用MyBookDetailView上的viewDidLoad方法?2.删除以下语句后是否可以重试:[self.navigationController popToRootViewControllerAnimated:NO];弹出并推到一起。如果navigationController不是nil。我建议操纵navigationController的viewControllers堆栈,以便一次处理它。@AC1我将NsLog放在ViewDiLoad MyBookDetailView上,但它从未打印过它,我还删除了此语句[self.navigationController popToRootViewControllerAnimated:NO];但是什么也没发生。很可能你的self.navigationController是零。你能核实一下吗?您自己是否嵌入到导航控制器中?谢谢您的回复,MyBookTableView是UITableViewController,MyBookDetailView是UIViewController您的代码不起作用这里是MyBookTableView,这里是detailView@Elnazzhahmehr,我正在谈论/关于MyBookDetailView类nib及其基础类。如果MyBookDetailView类有nib文件,那么您必须在分配时提到它的名称。是的,我会将最新的名称发送给您我仍然找到MyBookDetailView*c=[[MyBookDetailView alloc]init]。。。。其中是initWithNibName:bundle方法。感谢您的回复,MyBookTableView是UITableViewController,MyBookDetailView是UIViewController。您的代码不起作用。这里是MyBookTableView,这里是detailView@elnazzahamehr,我正在谈论/关于MyBookDetailView类nib及其基础类。如果MyBookDetailView类有nib文件,那么您必须在分配时提到它的名称。是的,我会将最新的名称发送给您我仍然找到MyBookDetailView*c=[[MyBookDetailView alloc]init]。。。。其中是initWithNibName:bundle方法。