iOS如何转到上一个视图

时间:2014-03-06 15:07:09

标签: ios view navigation notifications

我有一种情况,我想从Previous到Previous视图。 一个MainView调用模态CWViewC调用模态CRViewC&调用模态CRDViewC - 在CRDViewC中的动作事件上我需要返回到CWViewC&更新它的一个组件。

我想在我的应用程序中使用navigationController,但我无法设置它,因此现在根本没有使用它。我也害怕玩Segue也认为它可能会影响应用程序的兼容性:(。我在网上搜索类似情况但无法找到解决方案。

我可以考虑从CRDViewC向CWViewc发送任何类型的通知。但是再次如何在各自的类和实施中实现它。如何摆脱(我的意思是关闭)CRViewC然后。

所以请建议并指导我解决问题。

非常感谢任何帮助。感谢。

编辑:

我的需求是我必须先调用LoginVC&我的主要scrn是MAinTabVC。所以我把我的应用程序设为TabbedTemplate&我从AppDelgate&中调用我的LoginVC登录成功时,从AppDelegate我的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 = @"dylan@antila.co";
        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。

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 = @"dylan@antila.co";
        NSString *pswd = @"t4Wzpg4OQ5q8ZNVDPPo7wg==";

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

- (void)viewWillAppear:(BOOL)animated {     if(isLogged == false){         [self showLoginScreen:YES];     }

}

1 个答案:

答案 0 :(得分:2)

正如你提到的segues,我可以安全地假设你正在使用故事板吗?如果是这样,请在故事板文件中获取您的第一个视图控制器(带有MainView的控制器),转到菜单栏中的“产品”菜单,然后选择“嵌入>导航控制器”,如此屏幕截图所示:

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

然后,将视图控制器之间的segue更改为Push而不是modal,因此从mainView到CWViewC的那个将是Push,然后从CWViewC到CRViewC的那个将是Push等等。

视图不是模态的,但这是一种通过一堆视图进行更自然的方式。