2014-03-06 78 views
0

我有一種情況,我想從前一個視圖去往前一個視圖。 一個MainView調用模態CWViewC調用模態CRViewC &調用模態CRDViewC - 在CRDViewC中的一個動作事件我需要返回到CWViewC &更新它的一個組件。iOS如何前往以前的視圖

我想在我的應用程序中使用navigationController,但無法設置它,因此現在根本沒有使用它。我也很害怕和Segue一起玩,認爲它可能會影響到應用程序的兼容性:(我在網上搜索類似的情況,但無法找到解決方案。

我可以考慮發送任何類型的通知到CWViewc從CRDViewC,但再怎麼實現它在兩個相應的類&如何擺脫的(我的意思是接近),那麼CRViewC。

所以,請建議和指導我要同解決問題。

任何幫助,高度讚賞。謝謝。

編輯:

我的需求是我必須調用LoginVC之前&我的主要scrn是MAinTabVC。所以我做了我的應用程序TabbedTemplate &我從AppDelgate &登錄成功時從AppDelegate調用我的LoginVC,我的MainTabVC出現。這是我打電話給我的登錄:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch. 

    // Get the StartupData properties from device 
    MC_Utility *utility = [[MC_Utility alloc] init]; 
    self.theAppDataObject.startupData = [utility retrieveLocalData]; 
    NSLog(@"READ Loigin On Launch - %@", self.theAppDataObject.startupData.loginOnLaunch); 

    utility = nil; 

    // Show Login view if not logged On 
    if (!self.isLoggedIn) { 
     [self showLoginScreen:NO]; 
    } 

    return YES; 
} 

-(void) showLoginScreen:(BOOL)animated { 
     // Get login screen from storyboard and present it 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil]; 
    LoginViewController *loginViewController = [storyboard instantiateViewControllerWithIdentifier:@"loginViewController"]; 


    // Show Login 
    if (theAppDataObject.startupData.loginOnLaunch.boolValue == true) { 
     NSString *email = @"[email protected]"; 
     NSString *pswd = @"t4Wzpg4OQ5q8ZNVDPPo7wg=="; 

     [loginViewController startLoginProcess:email :pswd]; 
    } else { 
     [self.window makeKeyAndVisible]; 
     [self.window.rootViewController presentViewController:loginViewController animated:animated completion:nil]; 
    } 
} 

其他,我通常使用顯示出這樣的代碼的所有訪問量:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil]; 
MC_ChatWindowViewController *chatWindVC = [storyboard instantiateViewControllerWithIdentifier:@"chatWindowVC"]; 
[chatWindVC setModalPresentationStyle:UIModalPresentationFullScreen]; 
[self presentViewController:chatWindVC animated:YES completion:nil]; 

在我的AppDelegate,我曾試圖打電話給mainTabVC,但沒有成功。所以堅持原來的代碼。通過幾個教程也嘗試了幾種方法,但無法做到。我是iOS開發的新手&我還沒有找到舒適的方式來使用navControllers。

我在LoginVC中嵌入了NavController直通故事板。

CODE添加在MAinTAB的.m

@implementation MC_MainTabBarController 

bool isLogged = false; 

-(void) showLoginScreen:(BOOL)animated { 
    NSLog(@"Calling Login from MainTab"); 
    // Get login screen from storyboard and present it 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil]; 
    LoginViewController *loginViewController = [storyboard instantiateViewControllerWithIdentifier:@"loginViewController"]; 
    [loginViewController setModalPresentationStyle:UIModalPresentationFullScreen ]; 
    [self presentViewController:loginViewController animated:YES completion:nil]; 


    /* AUTO LOGIN 
    // Show Login 
    if (theAppDataObject.startupData.loginOnLaunch.boolValue == true) { 
     NSString *email = @"[email protected]"; 
     NSString *pswd = @"t4Wzpg4OQ5q8ZNVDPPo7wg=="; 

     [loginViewController startLoginProcess:email :pswd]; 
    } else { 
     [self.window makeKeyAndVisible]; 
     [self.window.rootViewController presentViewController:loginViewController animated:animated completion:nil]; 
    } */ 
} 

- (無效)viewWillAppear中:(BOOL)動畫{ 如果(isLogged ==假){ [自showLoginScreen:YES]; }

}

+0

你是什麼意思的「我無法設置它」?是否存在技術問題,或只是缺乏動力:p? 在我看來模態意見應在非常特殊的情況下被使用,經典的導航,你應該有一個'UINavigationController' – KIDdAe

+0

@KIDdAe去,在我的第一觀點,即LoginVC我嵌入NavContrl&I看到NavigationItem在LoginVC故事板。之前我編碼導航到所有屏幕。在我的問答中,我添加了如何從登錄移動到MainTabVC的代碼。 – Tvd

回答

2

至於你提到塞格斯,我可以放心地假設你使用故事板?如果是這樣,拿在故事板文件,你的第一個視圖控制器(具有的MainView),進入到產品菜單中的菜單欄並選擇嵌入>導航控制器,如在此截圖:

How to embed a view controller in a navigation controller in Storyboards

然後,將您的視圖控制器之間的這些段落更改爲Push而不是模式,因此從mainView到CWViewC的一個將是Push,然後從CWViewC到CRViewC的一個將爲Push,等等。

這些視圖不會是模態的,但這是通過一堆視圖進行的更自然的方式。

+0

我已經在navController中嵌入我的主視圖 - 正如我期待有一個navBar,但我沒有得到navBar,因此我將它保留原樣。而且我的所有導航都是通過代碼進行的,而不是繼續。所以還沒有使用過一次。 – Tvd

+1

您能否提供您在原始文章中使用的代碼? –

+1

好的,謝謝你的額外信息。爲了澄清,您使用的是故事板,並且您的loginVC嵌入到故事板中的導航控制器中,但是您是通過代碼處理導航的?如果我說得對,那聽起來很亂。我真的建議堅持一個或另一個,所以如果你在故事板中使用導航控制器,堅持繼續導航(你可以在代碼中做其他東西,這很好)。你能澄清嗎?謝謝 –