1

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

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

空白屏幕上的 iOS 导航栏,其中包含两张照片的轮廓,后跟标题

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

4

1 回答 1

1

Subclass 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

希望这可以帮助!

于 2012-09-05T09:17:52.237 回答