好的我不知道为什么这不起作用,但是我已经连接了一个tableView,我想为每个单元格设置19项文本。
单元格填充得很好,但是当我尝试滚动时,它会向下移动,我可以看到在初始视图中看不到的单元格,它会挂起,并且不会向下滚动。它只是快速回复。真的很啰!
我做错了什么?
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
return 19;
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
// Configure the cell...
if(indexPath.row == 0){
cell.textLabel.text = @"";
}else if(indexPath.row == 1){
cell.textLabel.text = @"";
}else if(indexPath.row == 2){
cell.textLabel.text = @"";
}else if(indexPath.row == 3){
cell.textLabel.text = @"";
}else if(indexPath.row == 4){
cell.indentationLevel = 2;
cell.textLabel.text = @"";
}else if(indexPath.row == 5){
cell.indentationLevel = 2;
cell.textLabel.text = @"";
}else if(indexPath.row == 6){
cell.indentationLevel = 2;
cell.textLabel.text = @"";
}else if(indexPath.row == 7){
cell.indentationLevel = 2;
cell.textLabel.text = @"";
}else if(indexPath.row == 8){
cell.indentationLevel = 2;
cell.textLabel.text = @"";
}else if(indexPath.row == 9){
cell.textLabel.text = @"";
}else if(indexPath.row == 10){
cell.textLabel.text = @"";
}else if(indexPath.row == 11){
cell.textLabel.text = @"";
}else if(indexPath.row == 12){
cell.textLabel.text = @"";
}else if(indexPath.row == 13){
cell.textLabel.text = @"";
}else if(indexPath.row == 14){
cell.textLabel.text = @"";
}else if(indexPath.row == 15){
cell.textLabel.text = @"";
}else if(indexPath.row == 16){
cell.textLabel.text = @"";
}else if(indexPath.row == 17){
cell.textLabel.text = @"";
}else if(indexPath.row == 18){
cell.textLabel.text = @"";
}
return cell;
}
答案 0 :(得分:42)
降低 您的tableView的 身高 。
答案 1 :(得分:7)
我知道这是一个老问题,这对你的问题来说是不是答案,而是建议改善你的代码,以便其他人可以受益。
你可以这样写:
if (indexPath.row >= 4 && indexPath.row <= 8) { // 4 and 8 inclusive
cell.indentationLevel = 2;
}
cell.textLabel.text = @"";
而不是:
if(indexPath.row == 0){
cell.textLabel.text = @"";
}else if(indexPath.row == 1){
cell.textLabel.text = @"";
}else if(indexPath.row == 2){
cell.textLabel.text = @"";
}else if(indexPath.row == 3){
cell.textLabel.text = @"";
}else if(indexPath.row == 4){
cell.indentationLevel = 2;
cell.textLabel.text = @"";
}else if(indexPath.row == 5){
cell.indentationLevel = 2;
cell.textLabel.text = @"";
}else if(indexPath.row == 6){
cell.indentationLevel = 2;
cell.textLabel.text = @"";
}else if(indexPath.row == 7){
cell.indentationLevel = 2;
cell.textLabel.text = @"";
}else if(indexPath.row == 8){
cell.indentationLevel = 2;
cell.textLabel.text = @"";
}else if(indexPath.row == 9){
cell.textLabel.text = @"";
}else if(indexPath.row == 10){
cell.textLabel.text = @"";
}else if(indexPath.row == 11){
cell.textLabel.text = @"";
}else if(indexPath.row == 12){
cell.textLabel.text = @"";
}else if(indexPath.row == 13){
cell.textLabel.text = @"";
}else if(indexPath.row == 14){
cell.textLabel.text = @"";
}else if(indexPath.row == 15){
cell.textLabel.text = @"";
}else if(indexPath.row == 16){
cell.textLabel.text = @"";
}else if(indexPath.row == 17){
cell.textLabel.text = @"";
}else if(indexPath.row == 18){
cell.textLabel.text = @"";
}
如果你碰巧为每个案例都有不同的文字,你可以使用:
switch (indexPath.row) {
case 0:
cell.textLabel.text = @"";
break;
...
case 18:
cell.textLabel.text = @"";
default:
break;
}
甚至更好地将所有内容放在NSArray
(数据库...)中,然后通过索引循环遍历它们。
答案 2 :(得分:6)
这对我有所帮助:
[self.tableView setContentInset:UIEdgeInsetsMake(0,0,65,0)];
答案 3 :(得分:4)
@EmptyStack答案是对的。那是替代但不是解决方案。
即使我们可以在故事板中实现相同的目标。
选择tableView - &gt;从故事板控件中单击“添加缺失约束”&#39;。 这将为tableView和View添加约束。
这帮助我解决了这个问题。 附上screen_shot供参考。
答案 4 :(得分:2)
您分享的代码对我来说很好。您是否在导航控制器堆栈上使用此tableview推送视图控制器?我以前见过人们这样做过。单元格的默认高度为44px,导航栏的高度为44px。因此,如果您在导航控制器堆栈上按此按钮,则滚动视图会像您所描述的那样快速向后捕捉。如果是这种情况,请将TableView的高度减少44 px(在“界面”构建器中或以编程方式编写,如果以编程方式绘制)并且应该修复它。
答案 5 :(得分:1)
您需要调整UITableView的高度,或者您可以尝试将[tableView reloadData]放在viewDidAppear方法中(如果放在viewWillAppear或viewDidLoad中,它似乎不起作用)。
在大多数情况下,前者适合我。
答案 6 :(得分:1)
如果你有故事板或笔尖试试这个(注意,如果你想支持横向,你可能需要添加一些约束)。
答案 7 :(得分:0)
我遇到了同样的问题。
检查看不到的行数。
在viewDidLoad中,添加以下方法:
myTableView.contentInset = UIEdgeInsets(top: 0,left: 0,bottom: yourCellHeight * rowHeight,right: 0)
希望我能对您有所帮助
答案 8 :(得分:0)