我想在popover中显示视图的子视图。 详细说明,
我有一个mainViewController。 我在这个mainViewController中有一个子视图'songListView'。 我在mainViewController中有一个名为'list'的按钮。 我想在点击“列表”按钮时在popover中显示songListView。
那么,我该怎么做呢。
答案 0 :(得分:7)
您可以使用以下代码作为从UIButton
显示PopOver的参考-(void) buttonAction:(id)sender {
//build our custom popover view
UIViewController* popoverContent = [[UIViewController alloc]
init];
UIView* popoverView = [[UIView alloc]
initWithFrame:CGRectMake(0, 0, 200, 300)];
popoverView.backgroundColor = [UIColor greenColor];
popoverContent.view = popoverView;
//resize the popover view shown
//in the current view to the view's size
popoverContent.contentSizeForViewInPopover =
CGSizeMake(200, 300);
//create a popover controller
self.popoverController = [[UIPopoverController alloc]
initWithContentViewController:popoverContent];
//present the popover view non-modal with a
//refrence to the button pressed within the current view
[self.popoverController presentPopoverFromRect:popoverButton.frame
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
//release the popover content
[popoverView release];
[popoverContent release];
}
答案 1 :(得分:2)
我的问题解决了。 我刚刚创建了另一个View Controller类,即'TempPopoverView'。
然后我将此TempPopoverView的视图设置为等于我的MainView的子视图
以下是我的代码中的代码段:
TempPopoverView *viewController = [[TempPopoverView alloc]initWithNibName:@"TempPopoverView" bundle:nil];
[self. songListView setHidden:NO];//songListView is subview of MainView
viewController.view=self. songListView;
UINavigationController *navCont = [[UINavigationController alloc]initWithRootViewController:viewController];
navCont.navigationBar.tintColor = [UIColor colorWithRed:.102 green:.102 blue:.102 alpha:1];
[self showPopOverController:navCont andFrame:sender.frame andInView:self.view];//self.view is the MainView
[viewController release];
[navCont release];
答案 2 :(得分:0)
你可以在主视图上使用presentModalViewController。
例如
SongListView *songList = [[SongListView alloc] init];
[self presentModalViewController: songList animated: YES];
也有不同的动画。
答案 3 :(得分:0)
就像你想在self.view中添加子视图一样简单
[popoverController.contentViewController.view addSubview:yourselfobject];