2012-06-09 29 views
0

我有嵌入另一個TTTableView像這樣一個TTTableView(_commentsItem):嵌入TTTableView空TTTableView不顯示「空」消息

self.dataSource = [DetailItemDataSource dataSourceWithObjects: 
         @"", 
         self.imageItem, 
         @"", 
         findItem, 
         @"", 
         _descriptionItem, 
         @"", 
         self.shareItem, 
         self.editItem, 
         @"", 
         _commentsItem, 
         @"", 
         _addCommentButtonItem, 
         nil]; 

當_commentsItem有行,一切都很正常。我甚至可以在_commentsItem的表中添加行,調用[.. refresh],並且封閉表會相應地調整自己。

_commentsItem爲空時會發生此問題。通常情況下,你會希望得到一個覆蓋整個屏幕的TTErrorView,但我什麼都沒有得到(實際上,我甚至不希望它覆蓋整個屏幕,我只想讓「emptyTitle」顯示出來。

我認爲這個問題是在TTTableView的「ShowEmpty」,這是創建另一個視圖包含TTErrorView,其封閉表一無所知:

- (void)showEmpty:(BOOL)show { 
    if (show) { 
    NSString* title = [_dataSource titleForEmpty]; 
    NSString* subtitle = [_dataSource subtitleForEmpty]; 
    UIImage* image = [_dataSource imageForEmpty]; 
    if (title.length || subtitle.length || image) { 
    TTErrorView* errorView = [[[TTErrorView alloc] initWithTitle:title 
                 subtitle:subtitle 
                 image:image] autorelease]; 
    errorView.backgroundColor = _tableView.backgroundColor; 
    self.emptyView = errorView; 

    } else { 
    self.emptyView = nil; 
    } 
    _tableView.dataSource = nil; 
    [_tableView reloadData]; 

    } else { 
    self.emptyView = nil; 
    } 

}

我懷疑showEmpty ISN」當TTTableView嵌入到另一個TTTableView中時,它確實打算正確工作,但問題變成了如何實現這一點。 ing表預計_commentsItem是一個TTTableViewItem,所以我不能只交換_commentsItem的視圖,比如UILabel。

所以問題是:當你在另一個TTTableView中嵌入TTTableView時,爲嵌入表顯示「表空」狀態的最好方法是什麼?

謝謝!

回答

0

這裏就是我最後做,以解決此問題:

  1. 在創建封閉TTTableView,我決定,如果我想嵌入一個表視圖(TTTableView)發表評論時,存在,或簡單的空消息[TTTableTextItem itemWithText:@「還沒有評論!」];

  2. 分配(TTTableView和TTTableTextItem的超類)的TTTableView或TTTableTextItem項TTTableItem *稱爲_commentsItem

  3. 內置包圍表:

    self.dataSource = [DetailItemDataSource dataSourceWithObjects: @ 「」, self.imageItem, @ 「」, 則findItem, @ 「」, _descriptionItem, @ 「」, self.shareItem, self.editItem, @「」, _commentsItem, @「」, _addCommentButtonItem, nil];

  4. 當事實上,我的意見,我則換了TTTableTextItem新TTTableView:

    _commentsPresentItem = 
    [[DetailCommentsItem alloc] initWithFilter:self.lfm.object_id 
                detailViewController:self]; 
    _commentsItem = _commentsPresentItem; 
    
    // This is SUPER important. Without it the TTTableView in the 
    // DetailCommentsItem won't appear properly. 
    [[_commentsItem commentsViewController] viewWillAppear:TRUE]; 
    
    // Update OUR data source to signal we're swapped out row. Remember, 
    // the source is a NSArray of SECTIONS each containing a NSArray of rows 
    // for the section. 
    unsigned int section = [[self commentsItemIndexPath] section]; 
    unsigned int row  = [[self commentsItemIndexPath] row]; 
    [[[[self dataSource] items] objectAtIndex:section] removeObjectAtIndex:row]; 
    [[[[self dataSource] items] objectAtIndex:section] insertObject:_commentsPresentItem 
                   atIndex:row]; 
    
    //Notify the table view 
    NSArray *x = [[NSArray alloc] initWithObjects:_commentsItemIndexPath, nil]; 
    [self.tableView beginUpdates]; 
    [self.tableView reloadRowsAtIndexPaths:x withRowAnimation:UITableViewRowAnimationFade]; 
    [self.tableView endUpdates]; 
    
  5. 無論我們是否創造了一個新表,該位被稱爲 - 我們需要它的時候,我們一個新評論被添加來強制封閉的表格正確地更新它的視圖。它包含了完整性。

    [[_commentsPresentItem commentsViewController] invalidateModel]; 
    [[_commentsPresentItem commentsViewController] refresh];