2014-09-27 72 views
1

我有一個基於iOS故事板的應用程序,它使用navigationController來控制視圖轉換。應用程序委託的didFinishLaunchingWithOptions是:爲什麼self.navigationController在故事板應用程序中無效?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"StoryboardPrincipal" bundle:[NSBundle mainBundle]]; 
    self.viewController = [storyboard instantiateInitialViewController]; 
    // Instantiate a UIWindow object and initialize it with the screen size of the iOS device 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    self.window.rootViewController = self.viewController; 
    [self.window makeKeyAndVisible]; 
    return YES; 

} 

在初始視圖中,由初始導航控制器推動時,我推像下一視圖:

[[UIStoryboard storyboardWithName:@"StoryboardPrincipal" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewControllerUsuario"]; 
self.ViewUsuarioVIP = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewControllerUsuario"];   
self.navigationController.navigationBar.hidden = NO; 
self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent; 
[self.navigationController pushViewController:self.ViewUsuarioVIP animated:YES]; 

雖然下一個視圖是成功推,self.navigationControllernil並且導航欄不會出現。

// 
// ViewController.h 


#import <UIKit/UIKit.h> 
#import "PageControl.h" 
#import "ViewUsuario.h" 
#import "SaibaMaisViewController.h" 
#import "WebService.h" 
#import "ViewCaptainViewController.h" 


@interface ViewController : UIViewController <UIScrollViewDelegate, PageControlDelegate, UITextFieldDelegate> { 
    IBOutlet UIScrollView *_scrollView; 
    IBOutlet PageControl *_pageControl; 
    IBOutlet UIImageView *leftArrow; 
    IBOutlet UIImageView *rightArrow; 

    } 
@property (nonatomic, retain) IBOutlet UIScrollView *_scrollView; 
@property (nonatomic, retain) IBOutlet UIScrollView *_imageScrollView; 
@property (nonatomic, retain) IBOutlet PageControl *_pageControl; 
@property (nonatomic, retain) IBOutlet UIImageView *leftArrow; 
@property (nonatomic, retain) IBOutlet UIImageView *rightArrow; 
@property (nonatomic, retain) ViewUsuario *ViewUsuarioVIP; 
@property (nonatomic, retain) ViewCaptainViewController *ViewCaptainVIP; 
@property (strong, nonatomic) SaibaMaisViewController *SaibaMaisViewControllerVIP; 
@property (strong, nonatomic) WebService *WebServiceVIP; 
@property (strong, nonatomic) NSString *firstname; 
@property (strong, nonatomic) NSString *id; 
@property (strong, nonatomic) NSString *lastname; 
@property (strong, nonatomic) NSString *type; 
@property (strong, nonatomic) NSString *photo; 


@end 

我試圖用故事板發佈圖片,但我不允許這樣做。但是,導航控制器是RootView。 ViewUsaruio聲明是:

// 
// ViewUsuario.h 
// FlyVIP 
// 

#import <UIKit/UIKit.h> 
#import "NovoVoo.h" 
#import "VoosExistentesTableViewController.h" 
#import "VooAbertosViewController.h" 

@interface ViewUsuario : UIViewController; 
@property (nonatomic, retain) NovoVoo *NovoVooVIP; 
@property (nonatomic, retain) VoosExistentesTableViewController *VoosExistentesVIP; 
@property (nonatomic, retain) VooAbertosViewController *VoosAbertosVIP; 
@property (strong, nonatomic) NSString *firstname; 
@property (strong, nonatomic) NSString *id; 
@property (strong, nonatomic) NSString *lastname; 
@property (strong, nonatomic) NSString *type; 
@property (strong, nonatomic) NSString *photo; 


@end 
+1

該代碼以何種方式出現?編輯您的問題以包含整個方法,包括方法聲明。 – 2014-09-27 00:41:37

+0

我想你沒有正確嵌入navigationController。 – 2015-03-11 17:08:49

回答

0

您還需要解釋故事板的結構以及ViewControllerUsuario視圖控制器的標題。你在哪裏定義了一個導航控制器在你的故事板?

如果要將導航控制器用作故事板的根視圖控制器,則必須在故事板中定義一個導航控制器。一個不是免費創建的。請注意,如果您以任何其他視圖控制器作爲根創建故事板,則可以從編輯器菜單中選擇「嵌入」。這會將根視圖控制器更改爲導航控制器,並使之前的視圖控制器成爲導航控制器的第一個子項。

+0

感謝Duncan當我定義一個故事板的導航控制器並編寫initalrootview代碼時,不應該nvagationController屬性被初始化過程自動顯示和初始化? – user3358125 2014-09-27 11:01:18

+0

不可以。只有當您將視圖控制器置於導航控制器的子菜單中時纔有效。 – 2014-09-27 11:22:33

+0

我從項目中刪除了所有的navigationController定義,現在navigationcontroller不再是零了。但是導航欄不會顯示,並且會顯示導航控制器堆棧上的最後一個視圖,但前一個視圖中的控件(例如pickerView)仍處於活動狀態。當前視圖中沒有任何控件可用。 – user3358125 2014-09-27 12:15:42

-3

我有同樣的問題。你可以使用getter方法,即:

[self navigationController] 
+1

這與self.navigationContoller相同 – ingaham 2015-02-28 22:16:57

0

很多時候只是提到它,你在iPhone模擬器舉止怪異應用就是XCode的是怪異。

完全退出XCode,然後再次運行您的應用程序。

如果這種情況持續存在,則說明您已如何設置故事板。很可能你的視圖控制器沒有嵌入到故事板中的導航控制器中。

我喜歡this tutorial,因爲它有很容易遵循的例子和許多截圖。