chi*_*uba 5 exc-bad-access objective-c uinavigationcontroller
我正在尝试用新的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];
}
Run Code Online (Sandbox Code Playgroud)
这里一切正常.问题是,如果我发布新的"viewController",它会崩溃.如果我选择:
[tempNavigationController popViewControllerAnimated:TRUE];
Run Code Online (Sandbox Code Playgroud)
我得到一些非常奇怪的行为,控制器永远不会被替换,我返回到rootController,导航栏上有两层文字.
如果我这样做:
[tempNavigationController pushViewController:viewController animated:FALSE];
Run Code Online (Sandbox Code Playgroud)
我得到BAD_ACCESS并且应用程序崩溃了.它以前工作过,但现在不再工作了.
我究竟做错了什么?
谢谢!
Nev*_*rBe 10
使用类别进行控制器更换:
// UINavigationController+ReplaceStack.h
@interface UINavigationController (ReplaceStack)
- (void) replaceLastWith:(UIViewController *) controller;
@end
// UINavigationController+ReplaceStack.m
#import "UINavigationController+ReplaceStack.h"
@implementation UINavigationController (ReplaceStack)
- (void) replaceLastWith:(UIViewController *) controller {
NSMutableArray *stackViewControllers = [NSMutableArray arrayWithArray:self.viewControllers];
[stackViewControllers removeLastObject];
[stackViewControllers addObject:controller];
[self setViewControllers:stackViewControllers animated:YES];
}
@end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6494 次 |
| 最近记录: |