我正在尝试用新的 viewController 替换我当前的 viewController。我以前能够做到这一点,但我遇到了 BAD_ACCESS 的一些问题。
这是当我想用新视图替换当前视图时将运行的代码。
(该函数将使用本地属性“self.some_data”(非原子,保留)调用)
-(void) labelSelected:(SomeDataObject*) some_data{
SomeViewController *viewController = (SomeViewController*)[[ClassManager sharedInstance] viewControllerForClassIdentifier:@"com.somename" fromPlistFileName:@"iPhoneScreenList"];
viewController.data = (NSObject*)some_data;
[some_data retain];
//[self.navigationController pushViewController:viewController animated:YES];
UINavigationController *tempNavigationController = self.navigationController;
[[self retain] autorelease];
[tempNavigationController popViewControllerAnimated:FALSE];
[tempNavigationController pushViewController:viewController animated:TRUE];
}
在这里一切正常。问题是如果我发布新的“viewController”它会崩溃。如果我选择:
[tempNavigationController popViewControllerAnimated:TRUE];
我得到了一些非常奇怪的行为,控制器永远不会被替换,然后我返回到 rootController 并且导航栏上有两层文本。
如果我这样做:
[tempNavigationController pushViewController:viewController animated:FALSE];
我得到 BAD_ACCESS 并且应用程序崩溃。它以前有效,但不再有效。
我究竟做错了什么?
谢谢!