2013-10-25 140 views
0

我通常只是爲我的iOS使用storyboard,但需要集成一個不使用storyboard而非xib的SDK。我最初的視圖控制器來自故事板,當按下按鈕(IBAction)時,我希望它進入xib視圖控制器,但不確定程序如何執行此操作。這是我的AppDelegate:從ViewController(storyboard)調用NavigationController(xib)

//AppDelegate.m 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:...{ 

// set to storyboard on launch 
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"iPhoneStoryboard" 
                 bundle: nil]; 

UIViewController* viewController = [mainStoryboard instantiateInitialViewController]; 
[self.window setRootViewController:viewController]; 

[window makeKeyAndVisible]; 
return YES; 
} 

這裏是我的代碼的.h:

//mainVC.h 
#import <UIKit/UIKit.h> 

@interface MainVC : UIViewController{ 
UIWindow *window; 
UINavigationController *navigationController; 
} 

@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController; 
@property (nonatomic, retain) IBOutlet UIButton *buttonScan; 

-(IBAction) ActionScan; 

@end 

與.m:

//mainVC.m 
@interface MainVC() 

@end 

@implementation MainVC 

@synthesize window; 
@synthesize navigationController; 
@synthesize buttonScan; 

- (IBAction)ActionScan{ 

window.rootViewController = navigationController; 
[window makeKeyAndVisible]; 

} 

回答

0

創建您的廈門國際銀行的viewController的實例與initWithNibName

MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; 

&那麼如果你想要把其他視圖到已存在的navigationController推導航控制器

[self.navigationController pushViewController:desController animated:YES] 
+0

沒有奏效。我添加了AppDelegate.m,以便它可以幫助 – Bachzen

+0

它應該工作。什麼是錯誤 –

+0

在這裏粘貼你的代碼 –

0

在故事板視圖控制器,下面的代碼:

  1. alloc & in它的目的地視圖控制器:

    UIViewController *desController = [[SomeViewController alloc]init];

  2. 顯示目的地視圖控制器:

    [self.navigationController pushViewController:desController animated:YES]

    [self.navigationController presentViewController:desController animated:YES completion:nil

0

通常你不直接設置窗口的rootViewController。相反,你應該使用

- (IBAction)ActionScan{ 
    [self presentViewController:self.navigationController animated:YES completion:nil]; 
} 

來顯示你的下一個視圖控制器。這個問題的第一個和被接受的答案給出了這個工作原理的更詳細的解釋。

Changing root view controller of a iOS Window

設置window.rootViewController並調用[窗口makeKeyAndVisible]通常發生在你的應用程序委託,但由於您使用的故事板,它是你的引擎蓋下完成的。另外,除非您使用多個窗口,否則您可以使用您的應用程序委託單例對象從任何位置訪問您的UIWindow。

MyAppDelegateClass *appDelegate = (MyAppDelegateClass*)[[UIApplication sharedApplication] delegate]; 
UIWindow *mainWindow = appDelegate.window; 
+0

在這個控制器實例(並且mainVC已經在其viewController堆棧中),則需要移除navigationController和u的屬性和實例變量se self.navigationController(由navigationController自動設置,並由具有相同名稱的新變量隱藏)訪問現有的UINavigationController。在你刪除你的navigationController屬性後,調用'[self。導航控制器pushViewController:myViewController動畫:是];' – adamF

+0

請接受這個答案,如果它的工作,或張貼更多的細節和代碼顯示什麼是不工作 – adamF

相關問題