2010-01-02 72 views
1

编辑标签视图让我简化的问题:假设你的应用程序有 两个视图,主视图和标签 视图与3个标签。主视图有 三个名为“Tab1”的标准按钮, “Tab2”和“Tab3”。当您点击 “Tab1”时,选项卡式视图应为 ,选中的选项卡1打开并且 与选项卡2和选项卡3相同。最好的一个视图的方式来调用iPhone

任何提示?
/EDIT

我想要做的事:当我的iPhone应用程序初始化时,它会显示一个按钮的视图。当我点击这个按钮时,它应该转到标签视图。

我在做的方式,它不工作(获取未捕获的异常):我开始通过基于视图的模板创建一个项目。在自动创建的视图控制器上,我声明了另一个名为TabbedViewController的视图控制器。这里的头文件:

#import <UIKit/UIKit.h> 

@class TabbedViewController; 

@interface DZBluePagesViewController : UIViewController { 
    TabbedViewController *tabbedViewController; 
} 

@property (nonatomic, retain) TabbedViewController *tabbedViewController; 

-(IBAction)goToTabbedView:(id)sender; 

@end 

我已经创建了一个名为厦门国际银行和TabbedView设置文件所有者的TabbedViewController的阶级身份。我也拖拽了一个Tab Bar Controller给它。

我已经添加的主视图按钮和这里的,我已经与它的主视图控制器文件相关联的动作:

- (void)viewDidLoad { 

    TabbedViewController *tvc = [[TabbedViewController alloc] 
           initWithNibName:@"TabbedView" bundle:nil]; 
    self.tabbedViewController = tvc; 
    [tvc release]; 

    [super viewDidLoad]; 
} 



-(IBAction)goToTabbedView:(id)sender { 
// [self.view removeFromSuperview]; 
    [self.view insertSubview:tabbedViewController.view atIndex:0]; 
} 

我得到的insertSubview呼叫未捕获的异常...到目前为止,我已经在多视图应用上完成了3或4个教程(从iPhone开发 - 马克和LaMarche - 书),我认为我已经准备好做一个没有任何人握着我的手...显然是错误的。任何人都可以帮忙?

+0

问题是在TabbedViewController,你能提供更多的信息得到些什么? – bentford 2010-01-02 05:48:29

+0

这是来自调试器控制台的粘贴 2010-01-02 11:02:00.869 DZBluePages [5604:207] ***由于未捕获的异常'NSInternalInconsistencyException',终止应用程序,原因:'直接修改由标签栏控制器不被允许。' 2010-01-02 11:02:00.871 DZBluePages [5604:207]堆栈:( 29262939, 2525458249,... – 2010-01-02 19:04:21

回答

1

要回答你的问题简化

我认为你需要第三个“根”视图和视图控制器既主页视图,然后将标签栏视图的上海华。

当您的应用程序启动时,根视图将加载主视图的内容。您可以在根视图控制器内这样做这些行:

homeViewController.view.frame = self.view.bounds; 
[self.view addSubview:homeViewController.view]; 

然后,当你想切换到标签栏视图,你可以这样做:

[homeViewController.view removeFromSuperview]; 
tabBarViewController.view.frame = self.view.bounds; 
[self.view addSubview:tabBarViewController.view]; 

这里有一个问题:在viewWillAppear:,viewDidAppear:除非你自己调用它们,否则方法将不会被调用,所以你也必须将它们插入到正确的位置。

根据Ben Gottlieb的建议,使用UINavigationController作为根视图可能会更容易。(我的意思是说root已经使用它,导航控制器的根视图将成为你的主视图)。然后,你可以调用pushViewController:方法来滑动tabBarViewController。你这样做,你会想自定义UINavigationController来隐藏导航栏,因为你可能不需要它,而Apple实际上不建议在导航视图层次结构中放置一个标签栏。

有关异常

您发布似乎没有有什么与你张贴的异常的代码。 See this blog post for instructions on setting a global breakpoint on thrown exceptions。这样你就可以使用调试器来找出你自己的程序中有害的代码行。

+0

谢谢!我会尝试,但首先我想通过链接中的提示收集有关异常的更多信息。 – 2010-01-07 17:47:13

0

当您收到异常时打开运行控制台(shift-command-R)。发布。您可能还想打开控制台,并在提示符处输入“bt”作为“back trace”。

发布例外。

+0

尝试进入界面生成器,删除TabView的,然后添加一个新的 – justin 2010-01-04 06:17:54

0

我会建议使用UINavigationController,然后一旦他们选择一个按钮就将它推到它的tabController上。如果你不想要幻灯片动画,只需传递NO作为animated:参数。

0

为什么有一个冗余的菜单视图?为什么不只是将标签视图视为一个视图,并让用户选择他们希望选择哪个标签?我不明白为什么你需要一个菜单​​,只是打开一个特定的标签时,无论如何标签栏界面不管菜单...

+0

主页视图具有额外的功能,为简单起见,此处没有提及。 – 2010-01-07 17:41:57