显示“这是啥?” UITableViewController 为空时的消息

Posted

技术标签:

【中文标题】显示“这是啥?” UITableViewController 为空时的消息【英文标题】:Showing a "what's this?" message when a UITableViewController is blank显示“这是什么?” UITableViewController 为空时的消息 【发布时间】:2012-09-05 09:01:51 【问题描述】:

我的应用包含多个 UITableViewController,它们不一定在所有情况下都有内容。例如,如果用户没有任何草稿,则草稿屏幕为空。

在这种情况下,我想显示一条简短的消息来解释屏幕的用途,例如内置照片应用程序中的这个屏幕:

在屏幕上获得描述性视图的最佳方式是什么?我不能直接继承 UIViewController,因为我依赖于一些专门与 UITableViewController 相关的 ios 6 功能,所以据我所知,我必须在 UITableView 中显示这个视图。有什么建议吗?

【问题讨论】:

【参考方案1】:

子类UITableViewController,然后在-viewDidAppear: 或其他类似的适当位置,检查表格中的单元格数是否为零。如果是这样,请添加此叠加层;如果没有,请确保删除覆盖。示例代码如下:

@interface MyTableViewController : UITableViewController
...
@property (nonatomic, weak) UIImageView *informativeOverlayImageView;
...
@end

@implementation MyTableViewController

...

- (void)viewWillAppear:(BOOL)animated

    [super viewWillAppear:animated];

    // Just for an example - you'll have your own logic for determining if there will be zero rows.
    if (self.myDataModel.items.count == 0 &&
        !self.informativeOverlayImageView.superview)
    
        if (!self.informativeOverlayImageView)
        
            self.informativeOverlayImageView = [[UIImageView alloc] initwithImage:[UIImage imageNamed:@"someImageName"]];
            [self.informativeOverlayImageView sizeToFit];
        
        [self.view addSubview:self.informativeOverlayImageView];
    
    else if (self.myDataModel.items.count > 0 &&
            self.informativeOverlayImageView.superview)
    
        [self.informativeOverlayImageView removeFromSuperview];
        [self.tableView reloadData]; // Add animations to taste.
    


...

@end

希望这会有所帮助!

【讨论】:

我认为您还需要禁用滚动。

以上是关于显示“这是啥?” UITableViewController 为空时的消息的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionView 委托方法的问题

通过 AppWidgetManager 更新我自己的小部件时,电源控制小部件显示一小会儿,这是啥问题?

错误显示“无法获取样式表 (#) 的文本:未找到具有给定 id 的样式表”,这是啥意思?

iTunes Connect - 预发布 - 内部测试人员的 Beta 测试显示还剩 31 天,这是啥意思?

在谷歌上搜索 iOS 应用时,同一应用显示超过 1 个 URL?这是啥意思?

我的应用程序挂起,windbg 转储分析显示所有线程都处于挂起/解冻状态。这是啥意思?