我在iOS5下的TTSectionedDataSource中遇到TTableTextItems之间的额外差距,相同的代码没有显示iOS4下的额外空间。您可以在下面的图片中看到它。 ,左边是IOS 4.3,右边是iOS5。
我的TTTableViewController代码是:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
self.variableHeightRows = NO;
self.tableViewStyle = UITableViewStyleGrouped;
self.autoresizesForKeyboard = YES;
}
return self;
}
- (void) createModel {
self.dataSource = [[[NewDataSource alloc] init] autorelease];
}
- (id<UITableViewDelegate>)createDelegate {
return [[[NewTableDelegate alloc] initWithController:self] autorelease];
}
TTTableViewDelegate代码是:
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
if (section == 0) {
return 70 ;
}
return 200;
}
我的TTSectionedDataSource:
- (void) tableViewDidLoadModel:(UITableView *)tableView {
[super tableViewDidLoadModel:tableView];
[self.sections addObject:@"Section 1"];
[self.items addObject:[NSArray arrayWithObject:[TTTableTextItem itemWithText:@"TTTableTextItem1" URL:@""]]];
[self.sections addObject:@"Section 2"];
[self.items addObject:[NSArray arrayWithObject:[TTTableTextItem itemWithText:@"TTTableTextItem 2" URL:@""]]];
}
问题正在发生,因为- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
中的方法TTTableViewDelegate
在iOS4下被调用2次(值为1和0)并且被调用4次(值1,1,0和0) )在iOS5下,这就是为什么我可以看到TTTableTextItems之间的额外差距。
为什么会发生这种情况以及如何预防?
答案 0 :(得分:0)
您可以发布TTSectionedDataSource
的完整代码吗?
如果您认为这是与iOS 5相关的错误,您可以尽可能详细地在https://github.com/facebook/three20/issues打开github问题
答案 1 :(得分:0)
问题与iOS5下- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
的新行为有关。
来自Apple文档:
在iOS 5.0之前,对于tableView:viewForFooterInSection:返回零视图的部分,表视图会自动将页脚高度调整为0。在iOS 5.0及更高版本中,您必须在此方法中返回每个部分页脚的实际高度。