2012-03-04 49 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

相關問題