免责声明:我非常 iOS开发新手。请原谅问题的可能愚蠢:)
我在XCode中启动了一个“单一视图应用程序”,它现在在“故事板”中有一个界面,它全部连接到代码并且运行良好。现在,我意识到我需要另一种观点。最简单的方法是什么(现在创建另一个视图,并在代码中切换它们)。我真的不关心动画。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:2)
如果要从XIB创建新视图,请执行以下操作:
在你的代码中。 我假设您当前有一个控制器类,它链接到屏幕上显示的视图。
在此控制器中,您可能有一个要结合的事件以显示新视图。让我们说myEvent。
- (IBAction) myEvent:(id)sender {
ViewControllerSubClass *subClass = [[ViewControllerSubClass alloc] initWithNibName:@"YourXIB" bundle:nil];
subClass.view.frame = self.view.frame;
subClass.view.autoresizingMask = self.view.autoresizingMask;
[self.view.superview addSubview:subClass.view];
//ARC
instanceVarSubClass = subClass;
//NO ARC
self.instanceVarSubClass = subClass;
[subClass release];
}
您应该使用(retain)关键字创建强实例变量(ARC)或属性。
希望这有用。
答案 1 :(得分:1)
最简单的方法是使用NavigationController和另一个ViewController。
在故事板中,选择那里存在的ViewController。然后,单击菜单中的“编辑器”并选择“嵌入”> NavigationController。
其次,创建一个新的UIViewcontroller子类将UIViewController拖到故事板上。并在Identity Inspector中将它的类设置为刚刚创建的viewcontroller。
第三步,单击ctrl键并从第一个viewController拖动到刚拖到故事板上的那个。一个弹出窗口将会出现。点击“推送”。你刚刚创建了一个segue。恭喜:)
单击segue(ViewControllers之间的线)并在属性检查器中为其指定标识符。
接下来,在您的代码中,执行此操作([segue-identifier]是您刚才提供的标识符。):
[self performSegueWithIdentifier:@"[segue-identifier]" sender:self];
....
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([[segue identifier] isEqualToString:@"[segue-identifier]"])
{
second *controller=[segue destinationViewController];
//do stuff with the new controller here, for instance: delegation.
}
}
我想是的!希望我没有忘记任何重要的事情;)
答案 2 :(得分:0)
在您的项目中添加一个新的UIViewController子类。
在故事板中,将新视图控制器拖到现有视图旁边的故事板中。在身份检查器中,将自定义类设置为新的视图控制器类。
在原始视图控制器上放置一个新按钮,然后按住Ctrl键拖动到新视图控制器。从segue类型弹出窗口中选择“modal”。
此时您将能够运行您的应用程序,按下新按钮,将出现新的视图控制器视图。
要切换回第一个视图,您需要在新视图控制器中调用dismissModalViewController:animated:
的另一个按钮。剩下的由你决定!祝你好运!
答案 3 :(得分:0)
我对iOS开发也很陌生,并且没有太多关于故事板的经验,但我为客户做的应用程序在他们的需求上相当简单,因此我希望能够在之前定位iOS版本到4.0。
如果您的应用程序的情况类似(即您不使用iOS 4/5中的任何主要功能),那么我建议您坚持使用XIB文件。 ThomasM提供了比使用故事板更详细的答案,但是使用XIB和NavigationControllers它就像这样简单:
[self.navigationController pushViewController:dvController animated:YES];