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

Ios 在没有故事板的空应用程序中切换视图,ios,objective-c,storyboard,Ios,Objective C,Storyboard,我是iOS开发新手,正在开发一款与web服务交互的应用程序。我有一个带有相应NIB文件的登录视图控制器,它控制登录页面。然后我有一个列表视图控制器和它各自的NIB文件,它在登录后显示web服务中的元素列表。当我创建应用程序时,我创建了一个空的应用程序,所以现在我的项目中没有故事板 我将登录视图控制器作为根视图控制器加载。按下登录按钮并验证凭据后,我希望使用列表视图控制器将用户带到列表视图。做了一些研究之后,你似乎需要一个故事板来完成这一点 我真的需要一个故事板来切换视图和视图控制器吗?如果没有,

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

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

我真的需要一个故事板来切换视图和视图控制器吗?如果没有,我如何添加故事板并将其用于当前视图,这样我就不必重做整个视图


任何帮助都将不胜感激

我想讨论一些关于你问题的案例

案例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。但对于其他视图,您可以只按ViewController

案例2:您没有作为rootViewController的navControl。如果您只想更改窗口的rootViewController,则可以执行以下操作:

appDelegate.window.rootViewController = anotherViewController;

希望这能有所帮助。

1:首先在app delegate.h中创建UiWindow属性

@property (strong, nonatomic) UIWindow *window;
2:应用内delegate.m文件创建UINavigationController的通用变量

UINavigationController *navigationController;
3:像这样自定义应用程序委派方法,请注意在应用程序委派中导入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;
}

我希望它能起作用。

你不需要故事板。但是,最好将列表视图作为根视图。然后,当应用程序加载时,检查他们是否已登录,如果未以模式显示登录视图(如果希望即时显示,则不显示动画),然后在他们登录时关闭该视图。您是否有选项卡栏或如何在应用程序的各个部分之间导航?您可以创建一个导航控制器作为窗口的根视图控制器。然后将登录控制器设置为导航控制器的根视图控制器。如果您想显示其他控制器,只需将它们推送到导航堆栈,或显示它们。