【问题标题】:xCode - Changing views between 2 existing xib-filesxCode - 在 2 个现有 xib 文件之间更改视图
【发布时间】:2011-07-13 21:35:38
【问题描述】:

我是 xCode 和 Objective-C 的新手,所以我想做一个简单的文本角色扮演游戏。

我目前正在制作一个由 4 个 xib 文件组成的角色创建过程。我切换视图工作的唯一方法是查看实用程序模板。问题是,现在我将第一个屏幕作为第二个屏幕的代表,作为第三个屏幕的代表等。所以在角色创建过程结束时,我无法关闭视图,因为这只是“退后”观点。

当我四处寻找解决方案时,我发现了一个 addSubview 方法,但似乎这会产生一个新视图,例如,以编程方式排列是空的。

我所需要的只是从一个加载的 xib 切换到另一个 xib 的简单方法。我误解了 addSubview 还是我需要完全不同的东西?

(如果有帮助:我已经使用 VB 工作了几年,以防你注意到我错过了一些关于视图等的概念) 提前致谢! :)

【问题讨论】:

    标签: iphone xcode views xib


    【解决方案1】:

    使用此代码。它真的很简单,效果很好。

      View *view = [[View alloc] initWithNibName:@"xibNameGoesHere" bundle:nil];
    view.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentViewController:view animated:YES completion:nil];
    

    这将切换到另一个 xib 文件,并且两个视图不会相互拥有。我现在在自己的游戏中使用它。

    【讨论】:

      【解决方案2】:

      @Joakim 好的,我就是这样做的。我有一个名为 RootViewController 的类:UIViewContoller,我将其视图直接添加到窗口中。然后我创建了一个 UIView 的子类,即 MyView。然后我的所有视图子类化 MyView。我也为我所有的观点做了一个枚举。在 RootViewController 你应该有一个 switchView:(int)view 方法,看起来像这样:

          -(void) switchView:(myView) view
          {
              [_currentView removeFromSuperview];
      
              switch(view)
              {
                  case titleView:
                  _currentView = [[TitleView alloc] initWithRoot:self];
                  break;
                  case homeView:
                  _currentView = [[HomeView alloc] initWithRoot:self];
                  break;
                  default: break;
              }
              [self.view addSubview:_currentView];
              [_currentView release];
          }
      

      在@interface RootViewContoller 中定义MyView *_currentView; TitleView 和 HomeView 都是 MyView 的子类,并且有一个共同的方法 -(id)initWithRoot:(RootViewController*) rvc。

      要在视图之间切换,请使用 [_rvc switchView:homeView]; 希望这会有所帮助:)

      【讨论】:

        【解决方案3】:

        另一个想法是根本不使用界面生成器。我已经使用 iphone 应用程序工作两年了,发现界面生成器确实延长了实际制作东西的时间。制作自己的根控制器并考虑浏览视图所需的逻辑。

        【讨论】:

          【解决方案4】:

          它被称为UINavigationController。想法是

          1) 每次用户提交当前屏幕时,您将相应的“下一个”控制器推入导航控制器。奖励 - 您将在角色创建的每个步骤中免费获得“返回”按钮。

          2) 创建角色后,从堆栈中弹出所有角色创建控制器。

          在尝试“切换视图”等之前,请阅读View Controller Programming Guide for iOS。您将节省大量时间和精力。

          【讨论】:

            猜你喜欢
            • 2013-09-26
            • 2020-12-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-10-11
            • 1970-01-01
            • 2017-09-21
            • 2023-04-01
            相关资源
            最近更新 更多