2010-02-21 157 views
1

好的,我已经阅读了书籍上的所有书籍,并带有阅读苹果文档的多个视图控制器和自己的鸟嘴。视图控制器

我的问题是这样的:所有的例子显示通过工具栏或标签栏显示的多个视图。用户点击其中一个按钮,显示一个新的视图(保持显示标签/工具视图栏),然后他们可以点击标签/工具栏上的另一个按钮并转到另一个视图。

这是唯一可行的方法吗?如果我想要在屏幕中间有三个按钮的主屏幕(Play Game,Rules,High Scores),并且点击时,让它显示正确的笔尖文件,只能通过工具栏/标签栏?如果是这样,在一些不存在的应用程序中,这是因为它“隐藏”了吗?

我知道这可能是最基本的事情之一,但我似乎无法理解这一点。

我已阅读过关于视图,子视图等内容,并且在我继续时似乎越来越困惑。如果我在这里完全脱离基地,是否有一个例子在那里会有这样的事情:

mainViewController,与笔尖有3个按钮 点击任何按钮将调用另一个单独的视图与自己的笔尖。在这个观点上,我可以做任何想做的事情,然后有一个按钮让我回到mainViewController。

任何帮助/示例与此非常感谢。

地理...

回答

1

你并不需要使用一个UINavigationController做到这一点...

这是我能想到的,做到这一点的方法之一。假定:

mainMenuViewController - 你的观点,即具有3个按钮

view1ViewController控制器 - 您的其他视图的第一

view2ViewController - 你的其它视图

view3ViewController第二 - 第三您的其他视图

让您的按钮调用view1 mainMenuViewController创建UIViewController,然后从自己的窗口,例如:

YourAppApplicationDelegate *delegate = (YourAppApplicationDelegate*)[[UIApplication sharedApplication] delegate]; [self.view removeFromSuperview]; [delegate.window addSubview:view1ViewController.view];

你可以做同样的,在每个那些二级视图控制器的“返回主菜单”按钮。

+0

请问 [delegate.window addSubview:view1ViewController]; 然后显示视图?如果是这样,先前显示的视图仍然存在?它隐藏了吗? – George 2010-02-21 19:34:25

+0

我犯了一个错字,应该是[delegate.window addSubview:view1ViewController.view] ;.这是做什么是view1ViewController的视图添加到窗口。 [self.view removeFromSuperview];从窗口中移除调用UIViewController的视图。你基本上是在交换它们。 – ChrisW 2010-02-21 19:51:46

+0

尽管如此,您可以用相同的方法将它们交换回主菜单。在用户按下“主菜单”按钮时调用的任何方法,都会从窗口中删除当前视图,并将主菜单视图控制器的视图添加回来。 – ChrisW 2010-02-21 19:52:42

0

你可以去利用的UIViewController的presentModalViewController/dismissModalViewControllerAnimated方法一样,为为例您的视图之间回:

- (IBAction)button1IsPressed:(id)sender { 
    UIViewController *controller1; 
    [controller1 setDelegate:self]; 
    [self setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal]; 
    [self presentModalViewController:controller1 animated:YES]; 
    [controller1 release]; 
} 

- (void)dismissViewController { 
    [self dismissModalViewControllerAnimated:YES]; 
} 

而且回去在控制器1调用这个函数:

[self.delegate dismissViewController]; 

这只是一个例子,你可以做一些改进。