在“单一视图应用程序”中更改视图

时间:2011-12-22 07:40:22

标签: objective-c ios

免责声明:我非常 iOS开发新手。请原谅问题的可能愚蠢:)

我在XCode中启动了一个“单一视图应用程序”,它现在在“故事板”中有一个界面,它全部连接到代码并且运行良好。现在,我意识到我需要另一种观点。最简单的方法是什么(现在创建另一个视图,并在代码中切换它们)。我真的不关心动画。

任何帮助将不胜感激。谢谢!


编辑:非常感谢你的帮助。我最终创建了一个没有ARC或Storyboard的新项目,并将最小版本设置为4.0。然后我用了Mats Stijlaart的答案。

4 个答案:

答案 0 :(得分:2)

如果要从XIB创建新视图,请执行以下操作:

  • 创建一个UIViewController子类。 (.h + .m)
  • 制作一个空的XIB。
  • 使UIViewController子类成为XIB的文件所有者。
  • 添加UIView。
  • Ctr-从文件所有者拖动到UIView,将view属性链接到UIView。
  • 发表您的观点。

在你的代码中。 我假设您当前有一个控制器类,它链接到屏幕上显示的视图。

在此控制器中,您可能有一个要结合的事件以显示新视图。让我们说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];