将子视图显示为弹出窗口时出现问题

发布于 2024-10-27 11:09:41 字数 196 浏览 7 评论 0原文

我想在弹出窗口中显示视图的子视图。 详细地说,

我有一个 mainViewController。 我在这个 mainViewController 中有一个子视图“songListView”。 我在 mainViewController 本身中有一个名为“列表”的按钮。 我想在单击“列表”按钮时在弹出窗口中显示歌曲列表视图。

那么,我该怎么做呢。

I want to show the subview of a view in popover.
To elaborate,

I have a mainViewController.
I hava a subview 'songListView' in this mainViewController.
I have a button titled 'list' in the mainViewController' itself.
I want to show the songListView in popover on clicking the button 'list'.

So, how should I do this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

对岸观火 2024-11-03 11:09:41

您可以使用下面的代码作为从 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];
}

You could use the below code as a reference for showing PopOver from a UIButton

-(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];
}
过度放纵 2024-11-03 11:09:41

我的问题解决了。
我刚刚创建了另一个视图控制器类,即“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];

My problem is solved.
I just created another View Controller class, i.e. 'TempPopoverView'.

Then I set the view of this TempPopoverView equal to the subview of my MainView

Here is the code snippet from my code:

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];
︶ ̄淡然 2024-11-03 11:09:41

您可以在主视图上使用presentModalViewController。

例如,

SongListView *songList = [[SongListView alloc] init];
[self presentModalViewController: songList animated: YES];

也可以有不同的动画。

U can use presentModalViewController on your main view.

For example

SongListView *songList = [[SongListView alloc] init];
[self presentModalViewController: songList animated: YES];

There are different animations possible as well.

绻影浮沉 2024-11-03 11:09:41

就像你想象的一样简单,在 self.view 中添加子视图

[popoverController.contentViewController.view addSubview:yourselfobject];

as simple as you think to add subview in self.view

[popoverController.contentViewController.view addSubview:yourselfobject];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文