将子视图添加到视图层次结构中

问题描述:

我想在用户单击按钮时显示视图。我有层次结构是这样的:将子视图添加到视图层次结构中

主窗口

-UIView 
--ScrollView 
---ScrollView.pages = UIViews 
----UIView (from above assignment) 
----TextView 
----InfoButton 

页是的PageController对象的NSMutableArry。这些钩到一个笔尖。这些笔尖是用户在滚动视图中滑动的页面。

的InfoButton点击连线像这样:

- (IBAction) infoButton_click:(id)sender{ 
topView topViewViewController *topView = [[topViewViewController alloc] initWithNibName:@"TopView" bundle:[NSBundle mainBundle]]; 
//[self.navigationController pushViewController: topViewView animated:YES]; 
//[self.view addSubview: topViewView.view]; 
[super.view addSubview: topViewView.view]; 
[topViewView release]; 
} 

InfoButton是在滚动型的网页之一。我已经注释了已经尝试过的不同代码。没有一个增加了观点。什么都没发生。有没有办法将TopView作为层次结构中的顶层视图?

您的目标是将视图添加为子视图还是使用导航控制器在新视图上滑动?目前我将假设后者。

- (IBAction)infoButton_click:(id)sender 
{ 
    TopViewController *topViewController = [[TopViewController alloc] initWithNibName:@"TopView" bundle:nil]; 
    [self.navigationController pushViewController:topViewController animated:YES]; 
    [topViewController release]; 
} 

这是正确的,如果你实际上有一个导航控制器。确保你真的做到了。当可可中“没有任何事情发生”时,通常意味着某种东西是零。您应该检查调试器或NSLog()以查看这些值中的任何值是否为零。这是可能的(甚至可能),你的父母有一个导航控制器,但你没有。

类应始终具有领先的资本。不要创建一个类“UIViewController”的称为“视图”的变量。这是一个受苦的肯定途径。 Objective-C是一种动态语言,对类型进行了有限的编译器检查。正确命名事物对于ObjC中的有效编程至关重要。

+0

这是在iPhone(可可触摸)。它不是导航控制器。这是一个基于视图的应用程序。正如我的OP所述,我尝试了你展示的代码,但它不起作用。 – 4thSpace 2009-05-25 15:49:48

根据您对上一个答案的评论,您想呈现一个模态视图。您通过创建新视图“modalView”并致电[topView presentModalViewController:modalView animated:YES]来完成此操作。

在iPhone操作系统的未来版本中,当然我不能评论它是否在NDA下,您可以通过在视图上设置属性来展示具有翻转过渡的模式视图控制器控制器将被呈现,其可能被称为modalTransitionStyle或某些情况。