我有这样的故事板,以便有一个汉堡菜单:
一切正常,导航并显示菜单。
在我的ViewController中,我有下一个代码:
if([navManager.CurrentViewName isEqual:@"Login"])
{
// TODO: Show login view
}
我想在红色(突出显示)矩形内显示登录视图。实现这一目标的最佳解决方案是什么?我将有许多其他观点 - 登录,帮助,个人资料等,以及我想要在红色矩形中显示的所有观点。
我试图在故事板上创建一个LoginViewController用于登录并使用它如下:
[self.view addSubview:login.view]
但它掩盖了整个视图,但我需要那个nabber始终可见。
我尝试将单独的视图控件添加到ViewController并执行此操作:
self.ContentView = login.view
但它有一些奇怪的偏移(视图没有居中)。
这是我在右侧使用LoginViewController的故事板(出于测试目的,它在中间有一个滑块):
突出显示的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];
}
结果是:
为什么会有偏差?
答案 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中类文件。