我有一种情况,我想从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]; }
}
答案 0 :(得分:2)
正如你提到的segues,我可以安全地假设你正在使用故事板吗?如果是这样,请在故事板文件中获取您的第一个视图控制器(带有MainView的控制器),转到菜单栏中的“产品”菜单,然后选择“嵌入>导航控制器”,如此屏幕截图所示:
然后,将视图控制器之间的segue更改为Push而不是modal,因此从mainView到CWViewC的那个将是Push,然后从CWViewC到CRViewC的那个将是Push等等。
视图不是模态的,但这是一种通过一堆视图进行更自然的方式。