2011-03-23 58 views
1

我想以编程方式向我的视图FirstViewController.xib添加子视图。现在这是怎么看起来像在xcode中添加子视图隐藏视图的其余部分

enter image description here

当我点击撰写按钮另一种观点认为,SecondViewController.xib,从底部弹出。它有一个类似于你在图片中看到的导航栏。

不,我想添加一个子视图:

TTMessageController* controller = [[[TTMessageController alloc] 
           initWithRecipients:nil] autorelease]; 

[self.view addSubview:controller.view] 

不过,我得到一个奇怪的结果。该controller.view是重叠的侧边栏:

enter image description here

我该如何解决这个问题,使导航栏是可见的。

+1

观察说, “自动释放”。您将视图添加为子视图,因此视图的保留计数增加1,但不是TTMessageController的保留计数。在您从超级视图中删除TTMessageController的视图之前,不要释放该控制器。 – Ned 2011-03-23 17:04:45

+0

我是iOS开发新手,这对我意味着什么?我必须删除autorelease吗? – 2011-03-23 17:35:09

回答

3

添加UIViewController的(或子类)以另一个UIView的不是苹果向您推荐当前视图控制器的看法 - 这意味着这样的方向变化检测可以胡作非为,等苹果说,你不应该有更多的比负责任何一个“屏幕”内容的视图控制器。

通常的呈现标准邮件控制器interace的方式是通过将它作为一个普通的UIViewController(例如,模态地或推入导航栈等)来呈现它 - 并且我建议同样的建议用于Three20邮件作曲家也是如此。

我给在我这里回答的建议是有关:

iPhone, Obj-C, How can I use in app email from an actionsheet button click while using addSubview?

+0

+ 1 - OP几乎肯定意味着以模态方式呈现此TTMessageController。 – 2011-03-23 17:38:03

+0

感谢您的咨询! – 2011-03-23 18:03:01

0

你需要按子视图的框架下来:

CGRect frame = controller.view.frame; 
frame = CGRectMake(0, 40, frame.size.width, frame.size.height); 
controller.view.frame = frame; 

以上40值是视图的原点的y值,应作相应调整,以满足您的需求。

相关问题