如何在 UIView 中嵌入表格视图,类似于在 iBooks 中用于字体选择的方式?

Posted

技术标签:

【中文标题】如何在 UIView 中嵌入表格视图,类似于在 iBooks 中用于字体选择的方式?【英文标题】:How do I embed a table view within a UIView similar to how it's done in iBooks for font selection? 【发布时间】:2013-04-02 18:10:42 【问题描述】:

我想实现类似于 iBooks 如何在 UIView 内嵌入 UITableView 以进行字体选择的东西,但我不确定如何。谁能解释一下如何实现这种效果?

(注意:这是针对 iPhone 的。)

【问题讨论】:

到目前为止您尝试过什么?添加UITableView 作为普通UIView 的子视图没有问题,但您需要提供UITableViewController 或数据源才能使其正常工作。然而,这应该是标准程序(挖掘一些关于此的教程)。还是我误会了你? 如果数据源是静态的,是否需要数据源? 好吧,如果你使用自定义的UITableViewController,那么这个作为UITableView 的数据源,你只需要相应地实现它。 - 如果您将此“弹出窗口”移动到单独的 nib 文件并通过界面生成器进行设计,您应该能够根据需要使用静态单元格添加数据。 我是在 iPhone 上做的(那张截图只是一个例子),所以我正在以编程方式设计它。我有一个 UITableView 作为类实例变量,但我对如何启动它、呈现它、设置它的委托和一切感到困惑。当我想将它添加到现有的 UIViewController 时,大多数教程似乎都概述了如何使用自定义 UITableViewController。 您希望它如何呈现?您展示的图片可能是 UITableViewController 作为弹出框的内容控制器。您需要指定您希望它在 iPhone 上的显示方式。 【参考方案1】:

您可以使用 UIPopover 控制器。 SettingsViewController 只是一个带有 tableview 的普通 ViewController。试试这样的:

-(IBAction)settings:(id)sender 

if (_poController != nil && [_poController isPopoverVisible] == YES) 

if ([_poController.contentViewController isKindOfClass:[SettingViewController class]]) 

  return;
 else 

  [_poController dismissPopoverAnimated:NO];



SettingViewController* vc = [[SettingViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];
UINavigationController *navController= [[UINavigationController alloc] init];
[navController pushViewController:vc animated:NO];

CGRect f = vc.view.frame;
f.size.height = 237.0f;
f.size.width = 350.0f;
vc.view.frame = f;
vc.modalPresentationStyle = UIModalPresentationFormSheet;
vc.contentSizeForViewInPopover = CGSizeMake(350.0f, 237.0f);

if (_poController == nil) 
_poController = [[UIPopoverController alloc]   initWithContentViewController:navController];

_poController.contentViewController = navController;
vc.controller = _poController;

[_poController presentPopoverFromRect:_settings.frame 
                             inView:_buttonsView
           permittedArrowDirections:UIPopoverArrowDirectionUp 
                           animated:YES];
[vc release];
[navController release];

【讨论】:

我真的应该更具体一些,但我是在 iPhone 上做的。那个截图只是显示了我想要的效果。【参考方案2】:

不确定它是否正是您想要的,但您也许可以使用它:

http://www.cocoacontrols.com/controls/wepopover

它在 iPhone 上可用。 Cocoa 控件也是很多自定义控件的好来源,我以前用过。

【讨论】:

以上是关于如何在 UIView 中嵌入表格视图,类似于在 iBooks 中用于字体选择的方式?的主要内容,如果未能解决你的问题,请参考以下文章

我怎么能在像 Path 这样的 UIView 中嵌入视频?

uiview 容器 - viewwithtag 有时返回 null

UIView 动画打破 TableView

如何在 UIView 中嵌入 UITableView?

在主视图Swift中嵌入子视图

如何将数据传递到 UIView 侧的嵌入式 UIViewController - Swift 5