我有一个TTTableView(_commentsItem)嵌入在另一个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;
}
}
我怀疑当它的TTTableView嵌入另一个TTTableView时,showEmpty并不是真正意图正常工作,但问题就变成了如何做到这一点。封闭表期望_commentsItem是一个TTTableViewItem,所以我不能只交换_commentsItem的视图,例如UILabel。
所以问题是:当你在另一个TTTableView中嵌入了TTTableView时,为嵌入式表格显示“表空”状态的最佳方法是什么?
谢谢!
答案 0 :(得分:0)
以下是我最终要解决的问题:
在创建封闭的TTTableView时,我决定是否要在存在注释时嵌入表视图(TTTableView),或者是一个简单的空消息[TTTableTextItem itemWithText:@“No Comments Yet!”];
将TTTableView或TTTableTextItem项目分配给TTTableItem *(TTTableView和TTTableTextItem的超类),名为_commentsItem
建立封闭表:
self.dataSource = [DetailItemDataSource dataSourceWithObjects: @“” self.imageItem, @“” 则findItem, @“” _descriptionItem, @“” self.shareItem, self.editItem, @“” _commentsItem, @“” _addCommentButtonItem, 零];
当我实际获得GOT评论时,我将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];
无论我们是否创建了新表,都会调用此位 - 当我们添加新注释以强制封闭表正确更新其视图时,我们需要它。它包括完整性。
[[_commentsPresentItem commentsViewController] invalidateModel];
[[_commentsPresentItem commentsViewController] refresh];