Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 无法从UITableViewController按打开详细视图(iOS Xcode)_Objective C_Ios_Xcode - Fatal编程技术网

Objective c 无法从UITableViewController按打开详细视图(iOS Xcode)

Objective c 无法从UITableViewController按打开详细视图(iOS Xcode),objective-c,ios,xcode,Objective C,Ios,Xcode,在我的TableView中,我按下其中一个单元格进入详细视图,由于某些原因,它不会带我进入详细视图。有人看到下面代码中有问题吗 对于上下文,这是一个教师目录,按下其中一个单元格将显示教师图片和其他信息 谢谢你的帮助…如果你需要更多的信息,我可以添加进去 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { //Get the selected teacher

在我的TableView中,我按下其中一个单元格进入详细视图,由于某些原因,它不会带我进入详细视图。有人看到下面代码中有问题吗

对于上下文,这是一个教师目录,按下其中一个单元格将显示教师图片和其他信息

谢谢你的帮助…如果你需要更多的信息,我可以添加进去

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

//Get the selected teacher

NSDictionary *dictionary = [listOfItems objectAtIndex:indexPath.section];
NSArray *array = [dictionary objectForKey:@"Teachers"];
NSString *selectedTeacher = [array objectAtIndex:indexPath.row];

//Initialize the detail view controller and display it.
DetailViewController *dvController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:[NSBundle mainBundle]];
dvController.selectedTeacher = selectedTeacher;
[self.navigationController pushViewController:dvController animated:YES];
dvController = nil;

}

您应该检查dvController是否已正确加载,因此在调用alloc init后,请尝试NSLog dvController。实例化它的另一种方法是使用这个简单的调用,如果您同时创建了视图控制器和xib,这个调用就会起作用:


DetailViewController *dvController = [[DetailViewController alloc] initWithNibName:nil bundle:nil];
此外,没有理由在最后否定dvController。如果您关心内存管理,也就是说您不想泄漏dvController,只需自动释放它。因此,请替换:


dvController=nil;
与:

这是因为导航控制器保留了推送视图控制器 (或使用圆弧)


最后,我假设tableView:didselectrowatinexpath:被调用。。。如果不确定,只需放置一个断点。

我不知道您是否解决了问题,但我遇到了相同的问题,我的详细信息视图没有出现。我终于换了

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


它成功了。希望能有所帮助。

谢谢,我正在使用ARC,所以我删除了所有发布元素。我确实一起创建了nib和视图控制器…我将在哪里添加该行?而不是“initwithname”的那个?对不起,这些基本的问题…没有太多客观的经验。。。谢谢是的,试着加上那一行来代替你的。并在最后移除dvController=nil。紧接着dvController=[[DetailViewController alloc]initWithNibName…]添加这一行:NSLog(@“View controller:%@”,dvController),并在调试器控制台中检查它是否打印了与“null”不同的内容。好的,谢谢…仍然是相同的问题…这是输出的'2012-02-05 14:49:47.751应用程序名称[6257:f803]视图控制器:“有什么想法吗?谢谢你的帮助!因此细节视图控制器是正常的;我假设导航控制器也已就位(尝试添加以下内容:NSLog(@“navigation controller:%@”,self.navigationController);另外,别忘了删除dvController=nil语句,它应该不会产生影响,但谁知道呢……在没有任何效果的情况下,我不可能通过给出的代码快照进一步帮助您。这意味着您没有加载导航控制器,因此无法推送任何内容。这就解释了问题。可能是包含表不在导航控制器内。Contque,谢谢,这也适用于我。但我没有看到“后退”按钮,它与此问题有关?这意味着我无法返回到第一个视图?
[self.navigationController pushViewController:dvController animated:YES];
[self presentModalViewController:dvController animated:YES];