【问题标题】:Change views in a UIViewController在 UIViewController 中更改视图
【发布时间】:2011-10-19 15:57:55
【问题描述】:

我有一个UIViewController,顶部有一个UIToolBar,有3 个按钮和一个UIView,当触摸这些按钮时,我必须更改控制器的视图。我能做些什么来得到我的porpuse?提前致谢。

【问题讨论】:

    标签: iphone ios uiview uiviewcontroller


    【解决方案1】:

    您可能希望使用UINavigationController 之类的东西来控制视图堆栈,然后让您的按钮为Touch Up Inside 操作调用这些方法之一:

    • pushViewController:animated:
    • popViewControllerAnimated:
    • popToRootViewControllerAnimated:
    • popToViewController:animated:

    这是一个很好的 uinavigationcontroller-tutorial 供您研究。

    【讨论】:

      【解决方案2】:

      您需要为您设置的每个操作执行类似的操作。

      在当前viewController的.h文件中:

      #import "OtherViewController.h"
      
      @interface MyViewController : UIViewController
      {
          OtherViewController *otherViewController;
      }
      
      @property(nonatomic, retain)IBOutlet OtherViewController *otherViewController;
      

      然后在当前 viewController 的 .m 文件中,您需要为每个 IBAction 添加以下内容(在里面进行修饰)。

      在.m文件的顶部添加:

      @synthesize otherViewController;
      

      然后做一个 IBAction 并把下面这行代码显示另一个视图:

      [self presentModalViewController:otherViewController animated:NO];
      

      在您的 otherViewController 中,您可以使用以下命令将自己关闭:

      [self dismissModalViewControllerAnimated:NO];
      

      注意:您需要做的另一件事是在 Interface Builder 中为您计划显示的每个视图创建一个 UIViewController。然后您需要进入身份检查器并将类设置为OtherViewController。然后,您需要像往常一样将 IBOutlet 链接到 OtherViewController。

      有一个YouTube video tutorial 涵盖了我上面提到的所有内容。这是一种非常简单的入门方式。

      【讨论】:

      • 感谢您的帖子,我想我应该更具体一点。我不想使用任何其他 uiviewcontroller。我只需要一个 uiviewcontroller,它的工具栏里面有三个按钮,工具栏下面有一个 uiview,这个 uiview 将包含取决于哪个按钮被按下的视图。所以,uiview 将在不同的时刻包含 3 个不同的 uiview。
      • 我所做的是创建 3 个不同的 UIview,其中包含自己的控件。然后是带有属性工具栏和视图容器的 uiviewcontroller。在 ViewdidLoad() 方法中,我创建了一个 uiviewxxxx,然后创建了 maid viewcontroller = uiviewxxxx;然后创建第一个视图的实例并设置 viewcontroller = firstview;在 uiviewcontroller 中显示它。我可以在按钮 touchupinside 方法上做什么来在 3 个视图之间切换?提前致谢。
      【解决方案3】:

      UiViewController view 属性是您看到的基本视图。可以设置(替换为另一个)。所以用你创建的另一个视图替换 ViewController 的视图对象。

      UIView * customView = [[[UIView alloc] initWIthFrame:viewFrame] autorelease];
      [self setView:customView];
      

      这里self代表当前viewController。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-25
        • 2011-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多