我将一个TTTableView (_commentsItem)嵌入到另一个TTTableView中,如下所示:
self.dataSource = [DetailItemDataSource dataSourceWithObjects:
@"",
self.imageItem,
@"",
findItem,
@"",
_descriptionItem,
@"",
self.shareItem,
self.editItem,
@"",
_commentsItem,
@"",
_addCommentButtonItem,
nil];当_commentsItem有行的时候,一切都很好。我甚至可以在_commentsItem中向表中添加行,调用..刷新,封闭的表会相应地进行自我调整。
当_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的TTTableView嵌入到另一个TTTableView中时,它实际上并不打算正确工作,但接下来的问题是如何做到这一点。封闭的表期望_commentsItem是一个TTTableViewItem,所以我不能仅仅将_commentsItem的视图换成一个UILabel。
所以问题是:当您将一个TTTableView嵌入到另一个TTTableView中时,显示嵌入表的"Table Empty“状态的最佳方式是什么?
谢谢!
发布于 2012-06-12 00:49:25
以下是我最终解决这个问题的方法:
self.dataSource = DetailItemDataSource dataSourceWithObjects:@"",self.imageItem,@"",findItem,@"",_descriptionItem,@"",self.shareItem,self.editItem,@"",_commentsItem,@"",_addCommentButtonItem,nil;
_commentsPresentItem = [DetailCommentsItem alloc initWithFilter:self.lfm.object_id detailViewController:self];_commentsItem = _commentsPresentItem;//这非常重要。如果没有它,// DetailCommentsItem中的TTTableView将不会正确显示。[_commentsItem commentsViewController视图viewWillAppear:TRUE];//更新我们的数据源以表示我们被换出了行。记住,//源是一个部分的NSArray,每个部分都包含//该部分的行数( NSArray )。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];//通知表视图NSArray *x = [NSArray alloc initWithObjects:_commentsItemIndexPath,nil];self.tableView beginUpdates;self.tableView reloadRowsAtIndexPath:x withRowAnimation:UITableViewRowAnimationFade;self.tableView endUpdates;
[_commentsPresentItem commentsViewController invalidateModel];[_commentsPresentItem commentsViewController refresh];
https://stackoverflow.com/questions/10959213
复制相似问题