2012-03-04 86 views
0

我试过Google上的每个解决方案,似乎没有任何工作。到目前为止,我已经通过App Delegate实现了一个UINavigationController,现在我想通过单击我在界面生成器中创建的UIButton来更改为WebViewController,但按钮​​似乎没有做任何事情我运行该应用程序。请记住,我想把它到我的WebViewController视图。通过UIButton(UINavigationController)从一个视图推送到另一个视图

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 

    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController]; 
    [self.window addSubview:navigationController.view]; 

    [self.window makeKeyAndVisible]; 
    return YES; 
} 

ViewController.m

- (IBAction)createFile:(id)sender { 
    WebViewController *webViewController = [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:NSBundle.mainBundle]; 
    [self.navigationController pushViewController:webViewController animated:YES]; 
} 

注:在我已经连接的CreateFile给按钮的界面生成器。

据我所知,这通常被称为超容易,但由于某种原因,我从来没有得到它的工作。提前致谢。

编辑:我添加了保温性,sythesized它并添加到我的代码在ViewController.m文件:

WebViewController *webViewController = [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:NSBundle.mainBundle]; 
self.navigationController = [[UINavigationController alloc] initWithRootViewController:webViewController]; 
[self.navigationController pushViewController:webViewController animated:YES]; 

但现在点击按钮,并返回一个SIGABRT应用程序崩溃: “不止一次推送相同的视图控制器实例(WebViewController:0x1ed70e80)

+0

现在你在相同的导航栈上推动两次相同的视图。您的init方法使用webViewController作为rootViewController,然后尝试再次推送完全相同的webViewController。 – richerd 2012-03-04 01:45:24

+0

也分配的根视图控制器时,你应该使用self.window.rootViewController = navigationController而不是[self.window addSubView:navigationController.view] – richerd 2012-03-04 01:47:00

+0

好吧,我用[self。替换了[self.window addSubView:navigationController.view]。 window.rootViewController = navigationController“,我拿出initWithNibName:@”WebViewController“bundle:NSBundle.mainBundle],但我仍然得到相同的错误。 – 2012-03-04 01:54:47

回答

0

试试这个

-(IBAction)createFile:(id)sender{ 
    WebViewController *webViewController = [[WebViewController alloc] 
    initWithNibName:@"WebViewController" bundle:nil]; 
    webViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
    [self presentModalViewController:webViewController animated:YES]; 
} 
+0

伟大:)得到了这个工作,但它也摆脱了我期待保留的UINavigationController(顶部栏消失)。我正在寻找推式风格的视图更改,但我猜你可以轻松地用_UIModalTransitionStylePush_ – 2012-03-04 01:58:57

+0

更改它,然后看看这个,它应该有助于清除此问题 https://developer.apple.com/库/ IOS /#samplecode/SimpleDrillDown /简介/ Intro.html#// apple_ref/DOC/UID/DTS40007416 – 2012-03-04 02:08:42

-1

我注意到的一件事是您不保留navigationController在appDelegate中。所以可能发生的事情是您的navigationControllers视图可能存在并保留(从all到addSubView),但导航控制器可能已被释放。

在你的AppDelegate

尝试使导航控制器保持特性

@property (nonatomic, strong) UINavigationController *navigationController 

在.m文件

@synthesize navigationController 

然后

编辑:更新了推视图控制器

WebViewController *webViewController = [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:NSBundle.mainBundle]; 
[self.navigationController pushViewController:webViewController animated:YES]; 
+0

你不能认真。 UIViewController有一个名为navigationController的保留属性。另外,如果它被释放,应用程序会崩溃。 – 2012-03-04 01:29:29

+0

请阅读我上面的**编辑**。 – 2012-03-04 01:36:55

+1

@fichek:窗口只保留在UINavigationController的视图中,所以前者将被立即释放。富豪的答案是解决一个合法的问题。 – titaniumdecoy 2012-03-04 01:47:16

相关问题