我正在从我的UIViewController创建一个类对象,并试图从中推出一个控制器,它将无法工作。
我一直在做研究但没有发现任何想法?
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.newClass = [[MyNewClass alloc] init];
self.newClass.view = self.view;
self.newClass.navigationController = self.navigationController;
[self.newClass connect];
}
...
@end
MyNewClass.h
@interface MyNewClass : NSObject<UINavigationControllerDelegate>
@property(nonatomic, retain) UIView *view;
@property(nonatomic, retain) UINavigationController *navigationController;
-(void) connect;
@end
MyNewClass.m
-(void)connect
{
OtherViewController * otherVC =
[[OtherViewController alloc] init];
self.navigationController pushViewController:otherVC animated:YES];
}
...
答案 0 :(得分:0)
将以下代码添加到appdelegate的didFinishLaunchingWithOptions方法中。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self copyDatabaseIfNeeded];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
[self.window makeKeyAndVisible];
return YES;
}
然后删除所有其他UINavigationController声明和分配。就像MyNewClass的NavigationVontroller一样。因为在这里你在appdelegate中声明和分配navigationcontroller,所以你可以在整个app中使用它。
答案 1 :(得分:0)
调用viewDidLoad
时,刚刚加载了视图,但视图控制器尚未添加到导航控制器中。因此,使用viewDidLoad
作为触发器是没有用的。
更好的方法是在创建导航控制器时将其显式传递给视图控制器。或者实施didMoveToParentViewController:
并在那里进行配置。
答案 2 :(得分:0)
您正在从控制器推送一个viewController,该控制器不是navigationController的一部分,所以首先使它成为navigationController的一部分,然后尝试