我对xCode和objective-C很新,所以我想制作一个简单的textRPG。
我目前正在制作一个由4个xib文件组成的角色创建过程。我切换视图工作的唯一方法是查看实用程序模板。问题是,现在我有第一个屏幕是第二个屏幕的委托,是第三个屏幕的委托等。所以在角色创建过程结束时我不能忽视视图,因为它只是“退后”通过观点。
当我搜索解决方案时,我发现了一个addSubview方法,但似乎是一个新的视图,例如,为了以编程方式排列,它是空的。
我需要的是从一个加载的xib切换到另一个xib的简单方法。我误解了addSubview还是需要完全不同的东西?
(如果有帮助:我已经与VB合作了好几年,如果你注意到我错过了某种关于观点的概念等等) 提前致谢! :)
答案 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应用程序两年了,发现界面构建器确实延长了实际制作东西的时间。制作自己的根控制器,并考虑浏览视图所需的逻辑。