DetailView无法从UITableViewController按下打开(iOS Xcode)

时间:2012-02-05 07:44:16

标签: objective-c ios xcode

在我的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;

}

2 个答案:

答案 0 :(得分:1)

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


DetailViewController *dvController = [[DetailViewController alloc] initWithNibName:nil bundle:nil];

除此之外没有理由在最后使用dvController。如果你关心内存管理,那就是你不想泄漏dvController,只需自动释放它。所以替换:


dvController=nil;

使用:


[dvController autorelease];

这是有效的,因为导航控制器保留了推送的视图控制器 (或使用ARC)。

最后我假设tableView:didSelectRowAtIndexPath:被调用...如果不确定,只是一个断点的位置。

答案 1 :(得分:1)

我不知道您是否曾解决过您的问题,但我的细节视图没有出现时遇到了同样的问题。我终于取代了

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

[self presentModalViewController:dvController animated:YES];

它有效。希望有所帮助。