在我的应用程序中,我目前有一个Navigation Controller作为初始视图控制器。这个NavigationNavigator非常以以下方式链接我的应用程序,其中NC = NavigationController,VC = ViewController,TC = TabBarController:
NC->LoginHomeVC->TC->(rest of app)
我已经读过TabBarViewController的必须是根视图控制器(我假设这并不意味着它必须是“初始VC”)
在我的AppDelegate.m 的didFinishLaunchingWithOptions方法中,我具有以下代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://myurl.com/xxx/xxx"] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:10];
[request setHTTPMethod:@"GET"];
NSError *requestError;
NSURLResponse *urlResponse = nil;
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&requestError];
NSString* result = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
if([result isEqualToString: @"logged"])
{
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *ivc = [storyboard instantiateViewControllerWithIdentifier:@"TabBarControl"];
[(UINavigationController*)self.window.rootViewController pushViewController:ivc animated:NO];
NSLog(@"It's hitting log");
}
else if([result isEqualToString: @"notlogged"])
{
//do nothing
NSLog(@"It's hitting notlog.");
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *ivc = [storyboard instantiateViewControllerWithIdentifier:@"JumpToLogin"];
[(UINavigationController*)self.window.rootViewController pushViewController:ivc animated:NO];
}
NSLog(@"%@", result);
return YES;
}
因此,我的条件只是检查用户是否已登录,如果已登录,则将其带到
TabBarViewController
,如果未登录,则将其带到LoginHomeViewController
。目前,我用于“已记录”的代码促使推送到TabBarController
。同样,我的LoginHomeVC
模态选择框上的登录按钮也指向TabBarController
。当执行推送时,NavController
的初始视图上的TabController
失去颜色和按钮以及所有这些,所有这些都在TC的初始VC类中设置。问题:我是否需要将
LoginHomeVC
与TabBarVC
分开,并将TabBarVC
设置为初始VC,或者我可以通过编程方式对TabBarVC
进行模式选择(推送可能就是为什么我会丢失按钮等),还是我正在接近LoginHome->TabBar
完全错误?编辑:解决此问题的最简单的 方法是什么?
最佳答案
将您的 TabBarControl 设置为rootview,如果用户未登录,则只需显示您的loginview控制器模型。
关于ios - AppDelegate,LoginHome,TabBar和HTTP GET请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20877248/