我是iOS开发的新手,正在开发一个与网络服务交互的应用。我有一个登录视图控制器及其相应的NIB文件,它控制着登录页面。然后我有一个列表视图控制器及其相应的NIB文件,该文件在登录后显示Web服务中的元素列表。当我创建应用程序时,我创建了一个空应用程序,所以现在我没有'在我的项目中有一个故事板。
我将登录视图控制器加载为根视图控制器。按下登录按钮并验证凭据后,我想使用列表视图控制器将用户带到列表视图。在做了一些研究后,你似乎需要一个故事板才能做到这一点。
我是否真的需要一个故事板来切换视图和查看控制器?如果不是如何添加故事板并将其与我当前的视图一起使用,那么我不必重做整个视图?
非常感谢任何帮助。
答案 0 :(得分:0)
我正在尝试讨论有关您问题的一些案例。
案例1:您有一个导航控制器作为您窗口的rootViewController,而loginViewController作为该导航控制器的rootViewController。
如果登录成功,您可以更改导航控制器的根视图控制器。为此,您需要在AppDelegate中设置属性。像这样:
@property (strong, nonatomic) UINavigationController *navControl;
在AppDelegate.m文件中
self.navControl = [[UINavigationController alloc] initWithRootViewController:login];
在navControl中分配根视图控制器。并将其设置为您窗口的rootViewController。
self.window.rootViewController = self.navControl;
如果登录成功,则从loginController中通过创建AppDelegate实例来更改navControl的rootViewController。
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.navControl.rootViewController = anotherViewController;
注意:登录是一种特殊情况。您不想通过按下后退按钮返回登录页面。所以更改导航控制器的rootViewController。但是对于其他视图,您可以推送ViewControllers。
案例2:您没有navControl作为rootViewController。如果你只想更改窗口的rootViewController,那么你可以这样做:
appDelegate.window.rootViewController = anotherViewController;
希望这有帮助。
答案 1 :(得分:0)
1:首先在app delegate.h中创建UiWindow属性
@property (strong, nonatomic) UIWindow *window;
2:在app delegate.m文件中创建UINavigationController的通用变量
UINavigationController *navigationController;
3:自定义你的app delegate方法,请注意在app delegate中导入viewcontroller.h文件。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
//suppose view controller is your login page
ViewController *viewController= [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
[navigationController.navigationBar setHidden:TRUE];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self.window setRootViewController:navigationController];
[self.window makeKeyAndVisible];
self.window.backgroundColor = [UIColor whiteColor];
return YES;
}
我希望它能奏效。