【发布时间】:2024-01-02 06:24:01
【问题描述】:
我有一个带有一个 MainWindow.xib 文件的应用程序。然后我有 ViewControllerA.xib 和 ViewControllerB.xib。我的 MainWindow.xib 有一个 ViewController 指向两个 ViewControllerA.xib。
在 ViewControllerA 上,我有一个按钮,我希望该按钮在按下时将 ViewControllerB 移动到屏幕上。我该怎么做?
我尝试了这段代码,但我认为我遗漏了一些东西:
- (IBAction)btMyButton:(id)sender
{
ViewControllerB * viewController = [[ViewControllerB alloc] initWithNibName:@"ViewControllerB" bundle:nil];
[[UIApplication sharedApplication].keyWindow addSubview:viewController.view];
[self.navigationController pushViewController:viewController animated:YES];
}
我的 ViewControllerB 确实出现了,但它在屏幕顶部被压扁,超过了前一个视图。非常感谢任何帮助。
谢谢
【问题讨论】:
-
如果你没有使用导航控制器项目,你的 self.navigationController 可能没有添加到窗口中,它也可能是 nil。
-
是的,你是对的,我没有 NavigationController。我是不是该?我想如果我放一个 NavigationController 我会在顶部放置一个栏。我不希望第一个屏幕顶部的栏,但是当用户单击按钮时,我将转到导航控制器视图。
-
不想有bar就不需要了,如果只想push一个view controller可以使用[self presentModalViewController:animated:],然后调用dissmissModelViewController:animated :在调用present的视图上...这可以通过self.parentViewController来完成。
-
导航控制器应该在应用程序委托上有一个出口,如果需要,您可以将其隐藏在您的第一个屏幕上。
-
但是你可能应该开始一个新的导航项目,看看导航控制器是如何添加的,然后使用它,即使你隐藏了导航栏。