2012-09-05 66 views
1

我的應用程序包含多個UITableViewControllers,它們在所有情況下都不一定具有內容。例如,如果用戶沒有任何草稿,則草稿屏幕爲空。顯示「這是什麼?」當UITableViewController爲空時的消息

在這樣的情況下,我想顯示一個簡短的消息,說明該屏幕是什麼,這樣的屏幕從內置的照片應用程序:

An iOS navigation bar over a blank screen containing the outlines of two photos, followed by the caption "No Photos or Videos", then the text "You can take photos or videos using the camera, sync photos or videos onto your iPhone using iTunes, or add photos and videos from other albums and events."

什麼是最好的在屏幕上獲得描述性視圖的方式?我不能直接繼承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 

希望這有助於!

+0

我想你還需要禁用滾動功能。 –