SingleView应用程序从代码更改视图

时间:2016-05-15 08:40:03

标签: ios objective-c iphone

我有这样的故事板,以便有一个汉堡菜单:

enter image description here

一切正常,导航并显示菜单。

在我的ViewController中,我有下一个代码:

if([navManager.CurrentViewName isEqual:@"Login"])
    {
        // TODO: Show login view
    }

我想在红色(突出显示)矩形内显示登录视图。实现这一目标的最佳解决方案是什么?我将有许多其他观点 - 登录,帮助,个人资料等,以及我想要在红色矩形中显示的所有观点。

我试图在故事板上创建一个LoginViewController用于登录并使用它如下:

[self.view addSubview:login.view]

但它掩盖了整个视图,但我需要那个nabber始终可见。

我尝试将单独的视图控件添加到ViewController并执行此操作:

self.ContentView = login.view

但它有一些奇怪的偏移(视图没有居中)。

这是我在右侧使用LoginViewController的故事板(出于测试目的,它在中间有一个滑块):

enter image description here

突出显示的Contetn是我要粘贴控制器的地方。

所以我有这段代码:

if([navManager.CurrentViewName isEqual:@"Login"])
    {
        UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        LoginController *controller = [sb instantiateViewControllerWithIdentifier:@"LoginController"];
        controller.view.frame = self.Content.frame;
        [self.view addSubview:controller.view];
        [self addChildViewController:controller];
    }

结果是:

enter image description here

为什么会有偏差?

2 个答案:

答案 0 :(得分:0)

您可以使用以下方法来达到目的。

login.view.frame = frame of red rectangle   
[self.view addSubview:login.view];
[self addChildViewController:login];

答案 1 :(得分:0)

您可以创建不同的xib文件,例如登录,帮助和个人资料。需要查看哪个视图,您可以启动并添加到Viewcontroller视图

let loginView = (NSBundle.mainBundle().loadNibNamed("LoginView", owner: self, options: nil) as NSArray).objectAtIndex(0) as? LoginView

        loginView.frame = self.view.frame
        self.view.addSubview(loginView)

您可以随意更改xib视图大小,这样做可以保持代码清洁,因为您的viewcontroller不会被不同的视图逻辑所拥挤,例如login,help和profile.Each视图逻辑将在他们的xib中类文件。