2014-07-03 33 views
1

我想要導航到故事板中幾乎任何視圖控制器的初始視圖。我不想爲初始視圖的每個視圖手動創建一個segue。有沒有一種很好用的方法可以做到這一點,或者我的其他VC可以繼承的方法?如何從任何視圖導航到初始視圖控制器

回答

3

這樣做的最好方法(在我看來)將使用UINavigation控制器。

使UINavigation Controller成爲故事板的根視圖控制器,然後將其連接到「實際」根視圖控制器。

然後,從已推入與導航控制器的任何視圖控制器,你可以這樣做:

[self.navigationController popToRootViewControllerAnimated:YES]; // or NO 
+0

你如何讓某些東西成爲整個故事板的根視圖? – User

+0

在您的故事板中的一個視圖控制器上,右側的箭頭附在VC的左側。它可能附加到您添加到故事板的第一個VC。它指定了根視圖控制器。將其拖到另一個VC來更改它。 – Brandon

+0

雖然這似乎是一個不錯的主意,但不知何故,我的屏幕變成了黑色。這可能是因爲我有一個UINavigationController作爲根(初始)視圖? – User

0

你可以保持強引用您在AppDelegate中需要的初始/根視圖控制器,並然後在其中設置一個方法,您可以從任何地方調用將當前視圖控制器切換到初始控制器。

你會做這樣的事情在AppDelegate.h文件:

@property (strong, nonatomic) MyInitialViewController *initialViewController 
- (void)switchToInitialViewController; 

在AppDelegate.m你可以這樣做:

- (void)switchToInitialViewController 
{ 
    self.window.rootViewCotroller = self.initialViewController; 
} 

然後你可以從任何方法做到這一點:

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
[appDelegate switchToInitialViewController]; 

而且,希望有所幫助。 :)

+0

嘿,看起來真聰明!將立即嘗試:) – User

+0

對不起,但這只是拖了很多錯誤,就像思考.. – User

+0

你有什麼錯誤?有了一些調整,也許是一個適當的設置,這個想法一般可以工作:) – iFeli

0

你爲什麼不出去

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if([segue.identifer isEqualToString:@"identifier"]) { 
     // Put your code here.... 
    } 
} 

每個視圖控制器有這種方法裏面,你可以移動到另一個控制器或您的INTIAL控制器。如果你使用NavigationController,那麼你可以去 @Eric的答案。

相關問題