为啥这个 UIView 没有出现在 UITableView 前面?

Posted

技术标签:

【中文标题】为啥这个 UIView 没有出现在 UITableView 前面?【英文标题】:Why is this UIView not presenting in front of a UITableView?为什么这个 UIView 没有出现在 UITableView 前面? 【发布时间】:2012-03-20 05:51:12 【问题描述】:

我有一个 UINavigationController/UITableView,当表格为空时,我想在其上方显示一个 UIView,以提示用户如何将项目添加到表格中。

我从未制作过 UIView(与之前的 UIViewController 不同),所以我将逐步介绍我所做的一切:

    创建一个新的 UIView 类 - MakeSentenceHelperView 制作一个名为 MakeSentenceHelperView.xib 的 nib 将文件的所有者设置为 MakeSentenceHelperView

在 MakeSentenceHelperView 中加载 nib:

- (id)initWithFrame:(CGRect)frame

    self = [super initWithFrame:frame];
    if (self) 
        // Initialization code
        NSLog(@"makesentencehelperview init");
        [[NSBundle mainBundle] loadNibNamed:@"MakeSentenceHelperView" owner:self options:nil];
    
    return self;

并在 UITableViewController 中显示MakeSentenceHelperView

        //present the placeholder view for sentences
        MakeSentenceHelperView *makeSentenceHelperView = [[MakeSentenceHelperView alloc] init];

        NSLog(@"present placeholder: self.navigationcontroller.view: %@", self.navigationController.view);

        //Something like this:
        [self.navigationController.view addSubview:makeSentenceHelperView];
        [self.navigationController.view bringSubviewToFront:makeSentenceHelperView];

类加载并记录正常,但 UITableView 前面没有出现任何内容 - 我哪里出错了?

更新:如果我添加 [self.tableView setHidden:YES]; 然后 tableview 消失并且空间是黑色和空的。我假设这意味着我在某处设置了错误的视图。

【问题讨论】:

在使用 nib 子类化 UIView 时,请通过 this link 这是一个非常有用的链接,谢谢 - 我实现了 awakeFromNib 和他们谈到的其他内容,但我仍然遇到同样的问题。 【参考方案1】:

您可以使用https://github.com/ecstasy2/toast-notifications-ios/ 来显示android 上的Toast 视图。检查数组大小,如果表格视图没有显示,那么调用这个并显示任何自定义方法。

【讨论】:

我真的不明白你的意思。我只想使用标准的 UIView。【参考方案2】:

感谢@Aadhira 提供的链接,这导致我遇到了问题。

    我需要添加 awakeFromNib 我错过了 [self addSubview:self.view];在 initWithFrame 的末尾。

【讨论】:

以上是关于为啥这个 UIView 没有出现在 UITableView 前面?的主要内容,如果未能解决你的问题,请参考以下文章

在 UITable+iphone 中选择特定行时将拇指图像传递给其他 uiview

自定义 UIView 中的 UItable

为啥这个自定义 UIView 代码不显示 UILabel 的?

为啥 view2 没有出现在这段代码中? (将 UIView 2 合并到 UIView 1 中)

当视图消失时,UIView动画停止,重新出现时不再恢复

在单独的类中为 FXBlurView 获取 UIView