带有 Tableview 和静态单元格的空弹出框

Posted

技术标签:

【中文标题】带有 Tableview 和静态单元格的空弹出框【英文标题】:Empty Popover with Tableview and Static Cells 【发布时间】:2013-01-15 18:37:15 【问题描述】:

我有一个表格视图设置,其中包含一些在弹出窗口中显示的静态单元格。问题是弹出框总是空的,我似乎不知道为什么。我已经删除了 tableviewcontroller 中的所有数据方法,所以这不是问题。任何人都可以在下面的代码中看到任何问题或指出我可能缺少的东西吗?谢谢!

TableViewController 代码:

@implementation ICAMDisciplineTableViewController
- (void)viewDidLoad

    [super viewDidLoad];
    self.clearsSelectionOnViewWillAppear = NO;
   self.contentSizeForViewInPopover = CGSizeMake(400.0, 400.0);


- (void)didReceiveMemoryWarning

    [super didReceiveMemoryWarning];


#pragma mark - Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    [self.delegate disciplineTableViewController:self
                           didSelectEnumItem:indexPath.row + 1];


@end

显示弹出框的代码:

-(void)fireDisciplinePopOver

    ICAMDisciplineTableViewController *popoverTable = [[ICAMDisciplineTableViewController alloc] init];
    self.popOverController = [[UIPopoverController alloc]initWithContentViewController:popoverTable];
    self.popOverController.delegate = self;
    popoverTable.delegate = self;
    [self.popOverController presentPopoverFromRect:self.disciplineTextField.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

【问题讨论】:

ICAMDisciplineTableViewController 有 .xib 文件吗?如果是这样,您需要致电initWithNibNamed:bundle: 你确定你的 UITableViewController 在不在 UIPopover 中时可以工作吗?先试试 -presentModalViewController 看看这是否真的是弹出框的问题。 它建立在 Storyboard 之上。不过感谢您的回复。 我可以在模态中很好地显示 tableviewcontroller。只有在弹出窗口中时它才为空。非常沮丧! 【参考方案1】:

在您的 fireDisciplinePopover 中执行此操作以从您的 Storyboard 中获取您的 UIViewController

  UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
                                                                 bundle: nil];

  ICAMDisciplineTableViewController *popoverContent = (ICAMDisciplineTableViewController*)[mainStoryboard
                                                                             instantiateViewControllerWithIdentifier: @"ICAMDisciplineTableViewController"];

确保在 Storyboard 中为 UIViewController 设置 Storyboard ID——我只是将它设置为上面的视图控制器名称。

【讨论】:

成功了。谢谢!知道为什么不使用 alloc/init 显示内容吗?我上面的代码非常适用于填充了 FetchedResultsController 的 UITableViewControllers。 @Majkeli 在 Storyboard 中创建视图时; .h/.m 文件不知道您创建的视图 - 您的 Storyboard 将视图连接到其类。这就是为什么您必须从 Storyboard 中获取 UIViewController 的实例,因为它为您提供视图和代码。您的弹出框是空白的,因为是的,您有一个有效的视图控制器实例,但它不知道情节提要中的关联视图。希望这是有道理的

以上是关于带有 Tableview 和静态单元格的空弹出框的主要内容,如果未能解决你的问题,请参考以下文章

为啥在将单元格插入带有静态单元格的表格视图时需要 tableView(_:indentationLevelForRowAt:)

带有自定义单元格的 UITableView 弹出窗口失败,单元格属性始终为零

移动时附加到 UICollectionView 中的单元格的弹出框被称为此集合视图的 ReloadData

如何在 ipad 中的 tableview 单元格上显示弹出框单击

在通用故事板中使用 present 作为弹出框

将 ViewController 呈现为弹出框