2013-08-23 37 views
1

我認爲這個問題的標題可能是誤導性的,因爲我不太確定如何將它們排成一行。 我試圖實現一個揭示控制器(就像在Facebook應用程序中看到的那樣),並且我使用了一個甜蜜的預製解決方案SWRevealViewController可以是found here。 在最簡單的例子作者提供一個(實施例/項目2),在Appdelegate.m文件中揭示了控制器東西成立:如何重新定位先前放置在Appdelegate.m中的代碼

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

    UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    self.window = window; 
    FrontViewController *frontViewController = [[FrontViewController alloc] init]; 
    RearViewController *rearViewController = [[RearViewController alloc] init]; 

    UINavigationController *frontNavigationController = [[UINavigationController alloc] initWithRootViewController:frontViewController]; 
    UINavigationController *rearNavigationController = [[UINavigationController alloc] initWithRootViewController:rearViewController]; 

    SWRevealViewController *mainRevealController = [[SWRevealViewController alloc] 
    initWithRearViewController:rearNavigationController frontViewController:frontNavigationController]; 

    mainRevealController.delegate = self; 

    self.viewController = mainRevealController; 

    self.window.rootViewController = self.viewController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

viewcontroller在appdelegate.h文件通過

定義

@property(strong,nonatomic)SWRevealViewController * viewController;

因此,這顯示揭示控制器作爲根視圖控制器。對於我的應用程序,我的根視圖控制器是不同的,我只在應用程序的後面纔開始使用揭示控制器。我的根視圖控制器是登錄屏幕,然後繼續視圖就是我想要實現的地方。

我想我的問題是:

  • 首先,是正確的把登錄屏幕作爲根視圖控制器?我是否應該使用某種模態視圖來彈出它然後擺脫它?
  • 如何以及在哪裏放置先前在委託文件中找到的內容?或者他們仍然在那裏,但沒有分配到根視圖控制器?

我對此感到非常的茫然,所以請原諒我,如果它看起來完全微不足道。 謝謝!

回答

0

我最近想過這個問題。事實上,我發現所有其他第三方實現都具有此設置。

我的建議是將根控制器更改爲揭示控制器,並從那裏建立一切。您可以禁用顯示您的原始根,登錄或任何其他控制器。我做了一次,沒有預期那麼痛苦。

+0

只是看到了這一點 - 感謝您的建議。最終,我只是從根控制器實現它,並禁用了任何選項以在根控制器上顯示它。從那裏開始在整個應用程序工作就好了 –

+0

很酷。儘管你自己也是這樣,你應該接受上面的答案。 – Mundi

+0

雖然我不確定它在尋找什麼。我仍然喜歡更清楚的解釋,就目前的結構而言,我可以在這裏取代這樣的東西。 –

0

我對派對遲到了,你想要的行爲很容易實現,只要把它想象成一個正常的導航堆棧。讓我們來看看你一直沿用的例子2(你不需要將代碼移出代理)。您應該將登錄視圖控制器設置爲前端導航控制器的根目錄,而不是將前視圖控制器設置爲前端導航控制器的根目錄。

下面是示例之前:

FrontViewController *frontViewController = [[FrontViewController alloc] init]; 
RearViewController *rearViewController = [[RearViewController alloc] init]; 

UINavigationController *frontNavigationController = [[UINavigationController alloc] initWithRootViewController:frontViewController]; 
UINavigationController *rearNavigationController = [[UINavigationController alloc] initWithRootViewController:rearViewController]; 

SWRevealViewController *mainRevealController = [[SWRevealViewController alloc] 
     initWithRearViewController:rearNavigationController frontViewController:frontNavigationController]; 

這裏是設置登錄視圖控制器後,例如:

LoginViewController *loginVC =[[LoginViewController alloc]init];//instead of frontViewController 
RearViewController *rearViewController = [[RearViewController alloc] init]; 

UINavigationController *frontNavigationController = [[UINavigationController alloc] initWithRootViewController:loginVC];//instead of frontViewController 
UINavigationController *rearNavigationController = [[UINavigationController alloc] initWithRootViewController:rearViewController]; 

SWRevealViewController *mainRevealController = [[SWRevealViewController alloc] 
    initWithRearViewController:rearNavigationController frontViewController:frontNavigationController]; 

不要忘了創建LoginViewController或任何你選擇的名字用它的nib文件並導入它。 在LoginViewController,需要落實在行動上的代碼移到frontviewcontroller

FrontViewController *frontViewController = [[FrontViewController alloc] init]; 
[self.navigationController pushViewController:frontViewController animated:YES]; 

的Et瞧。

相關問題