在没有故事板的空应用程序中切换视图

时间:2014-06-19 06:37:59

标签: ios objective-c storyboard

我是iOS开发的新手,正在开发一个与网络服务交互的应用。我有一个登录视图控制器及其相应的NIB文件,它控制着登录页面。然后我有一个列表视图控制器及其相应的NIB文件,该文件在登录后显示Web服务中的元素列表。当我创建应用程序时,我创建了一个空应用程序,所以现在我没有'在我的项目中有一个故事板。

我将登录视图控制器加载为根视图控制器。按下登录按钮并验证凭据后,我想使用列表视图控制器将用户带到列表视图。在做了一些研究后,你似乎需要一个故事板才能做到这一点。

我是否真的需要一个故事板来切换视图和查看控制器?如果不是如何添加故事板并将其与我当前的视图一起使用,那么我不必重做整个视图?

非常感谢任何帮助。

2 个答案:

答案 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;
}

我希望它能奏效。