我的 iPhone 应用程序是基于标签栏的,但我想触发一个操作,它完全切换标签栏控制器视图,并用来自不同 XIB 文件的视图替换窗口中的所有内容。我猜这必须在应用程序委托中完成(因为这是“首席”类),但我不知道从那里去的正确方法。有谁知道怎么做我想做的事?
提前致谢!
我的 iPhone 应用程序是基于标签栏的,但我想触发一个操作,它完全切换标签栏控制器视图,并用来自不同 XIB 文件的视图替换窗口中的所有内容。我猜这必须在应用程序委托中完成(因为这是“首席”类),但我不知道从那里去的正确方法。有谁知道怎么做我想做的事?
提前致谢!
多谢你们!尼克,这正是我需要的代码。如果有人觉得这很方便,这是我用来添加动画以切换视图的代码。只需将其放在应用程序委托中的方法中:
AnotherViewController *anotherViewController = [[AnotherViewController alloc] initWithNibName:@"AnotherView" bundle:nil];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.window cache:YES];
[[[window subviews] objectAtIndex:0] removeFromSuperview];
[window addSubview:[anotherViewController view]];
[UIView commitAnimations];
您的选项卡视图控制器可能具有它的操作方法,例如,-(IBAction)onChangeView
并且该方法调用 上的方法[[UIApplication sharedApplicaton] delegate]
,例如-(void)toggleScreen
.
-(IBAction)onChangeView:(id)sender
{
MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
[delegate toggleScreen];
}
然后在您的应用程序委托方法中执行以下操作:
-(void)toggleScreen
{
[[[window subviews] objectAtIndex:0] removeFromSuperview];
[window addSubview:otherView];
}
但是,如果您需要转换,可能会有所不同。
您实际上不必一直到应用程序委托。您可以轻松删除现有视图和控制器并添加新视图。这确实取决于你在做什么。例如,您可以暂时搁置现有的视图结构并使用完全不同的东西,如果您愿意,可以返回原始方案(虽然我不确定用户体验)。
在我的应用程序中,我通常有一个根视图控制器,或者我使用我的主窗口来添加视图和从中删除视图。一些视图会将其他视图添加到自己或将另一个视图转换到根视图或主窗口。一些视图会自行关闭以显示下面的视图。选项是无限的,取决于您的需求和架构。