xCode - 更改2个现有xib文件之间的视图

时间:2011-03-12 01:12:00

标签: iphone xcode views xib

我对xCode和objective-C很新,所以我想制作一个简单的textRPG。

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

当我搜索解决方案时,我发现了一个addSubview方法,但似乎是一个新的视图,例如,为了以编程方式排列,它是空的。

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

(如果有帮助:我已经与VB合作了好几年,如果你注意到我错过了某种关于观点的概念等等) 提前致谢! :)

4 个答案:

答案 0 :(得分:4)

使用此代码。它非常简单,效果很好。

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

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

答案 1 :(得分:2)

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

    -(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]; 希望这会有所帮助:)

答案 2 :(得分:0)

它被称为UINavigationController。想法是

1)每次用户提交当前屏幕时,都会将相应的“下一个”控制器推入导航控制器。奖金 - 你会在角色创作的每一步都免费获得“后退”按钮。

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

在尝试'切换视图'等之前,请先阅读View Controller Programming Guide for iOS。你会节省大量的时间和精力。

答案 3 :(得分:0)

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