将UIViewController显示为弹出窗口

时间:2011-06-22 21:21:55

标签: iphone cocoa-touch

我想在其他UIViewController上显示一个UIViewController作为一个小popover。 UIViewController应该是显示模态,但不能占用整个屏幕。 它应该只显示在屏幕的下三分之一处......

有人可以指点我一个教程或者给我一些启示吗?

我用Google搜索超过一个小时,但找不到任何东西,这对我有帮助:(

感谢您的帮助, 斯蒂芬

2 个答案:

答案 0 :(得分:2)

刚刚发现这个问题仍然没有答案......你有多种方法可以在iPhone上运行这样的东西: 根据具体情况,我想我会使用一个UIViewController子类从NIB加载,你配置为显示一个屏幕大小的视图,其backgroundColor属性设置为[UIColor clearColor]。将您要显示的任何子视图作为弹出框添加到所需位置的该视图(例如,屏幕的下三分之一)。然后,您可以使用UIModalTransitionStyleCrossDissolve以模态方式呈现视图控制器以淡入其中,甚至可以使用背景视图拦截触摸事件以关闭模态视图。 另一种可能性是将popover的视图控制器视图作为子视图添加到主视图控制器的视图中。您可以使用UIView的动画类方法为过渡设置动画。

答案 1 :(得分:1)

这可能会有所帮助。 你必须在标题中声明popOverController并使其成为属性并合成它。

if([self.popOverController isPopoverVisible])
{

    [self.popOverController dismissPopoverAnimated:YES];
    return;
}

UINavigationController *favNav = [[UINavigationController alloc]
                                  initWithRootViewController:favoritesView];

//favoritesView is an outlet to the VC Favorites
//make a nav controller with the root view an outlet to the view you want to present.


self.popOverController = [[[UIPopoverController alloc] 
                           initWithContentViewController:favNav] autorelease];

    [popOverController presentPopoverFromBarButtonItem:revealFavorites permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; //revealFavorites is the button i press to show the favorites popover
favoritesView.view.frame = CGRectMake(10, 10, 310, 320); //set the frame




if (![self.popOverController isPopoverVisible]) {
    [favNav release];

}

}