【发布时间】:2014-03-06 15:07:08
【问题描述】:
我有一种情况,我想从上一个视图转到上一个视图。 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]; }
}
【问题讨论】:
-
“无法设置”是什么意思?是否存在技术问题,或者只是缺乏动力:p?在我看来,模态视图应该在非常特殊的情况下使用,对于经典导航,您应该使用
UINavigationController -
@KIDdAe,在我的第一个视图中,即我嵌入在 NavContrl 中的 LoginVC 并且我在 LoginVC 的故事板中看到 NavigationItem。早些时候我已经编码导航到所有屏幕。在我的 Q 中。我添加了如何从登录转移到 MainTabVC 的代码。
标签: ios view navigation notifications