Ios 仅两行UITableView

Ios 仅两行UITableView,ios,uitableview,Ios,Uitableview,我在具有一个节的Nib上使用UITableView控件,并将委托/数据源设置为我的控制器,其中表数据数组仅初始化为2项。但是,当在模拟器中运行时,我看到在表视图中呈现额外的空行。如何使UITableView仅渲染两行 谢谢 您需要确保使用的数组计数为节中的单元格数 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [myArray count]

我在具有一个节的Nib上使用UITableView控件,并将委托/数据源设置为我的控制器,其中表数据数组仅初始化为2项。但是,当在模拟器中运行时,我看到在表视图中呈现额外的空行。如何使UITableView仅渲染两行


谢谢

您需要确保使用的数组计数为节中的单元格数

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [myArray count];
}

您需要确保使用的数组计数为节中的单元格数

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [myArray count];
}

您可以将表视图的框架大小减小为2*cellHeight

或者任何必要的高度。假设每个单元格的高度为44像素,您只有一个分区,因此没有分区标题,您可以执行以下操作:

self.tableView = [[UITableView alloc] 
  initWithFrame:CGRectMake(x-coord, y-coord, width, 88) 
  style:UITableViewStylePlain];

假设每个单元格的高度为44像素,则只显示2个单元格。

您可以将表格视图的框架大小减小为2*cellHeight

或者任何必要的高度。假设每个单元格的高度为44像素,您只有一个分区,因此没有分区标题,您可以执行以下操作:

self.tableView = [[UITableView alloc] 
  initWithFrame:CGRectMake(x-coord, y-coord, width, 88) 
  style:UITableViewStylePlain];

假设每个单元格的高度为44像素,则只能显示2个单元格。

您可以从viewDidLoad调用此方法:

- (void) addFooter
{
 UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)];
 v.backgroundColor = [UIColor clearColor];
 [self.tableView setTableFooterView:v];
}

您可以从viewDidLoad调用此方法:

- (void) addFooter
{
 UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)];
 v.backgroundColor = [UIColor clearColor];
 [self.tableView setTableFooterView:v];
}

我遇到了一个类似的问题,如何只为包含数据的单元格显示分隔符。tableView在分配给它的宽度和高度的区域中呈现尽可能多的行。您在numberOfRowsInSection中指定的号码仅用于确定它应该调用cellForRowAtIndexPath的次数

为了克服空单元格分隔线渲染的困难,我执行了以下操作:

UIView *separatorView = [[UIView alloc] initWithFrame:CGRectMake:
                                (0, cell.frame.size.height-1, 
                                   cell.frame.size.width, 1)];
[separatorView setBackgroundColor:[UIColor lightGrayColor]];
[separatorView setAlpha:0.8f];
[cell addSubView:separatorView];
禁用整个tableView的分隔符。您可以在Interface builder中的tableview检查器中执行此操作,也可以通过调用[yourTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]

在cellForRowAtIndexPath中,使用单元格填充tableview创建新的UIView并将其设置为单元格的子视图。此视图的背景为浅灰色,略微透明。您可以通过以下方法实现此目的:

UIView *separatorView = [[UIView alloc] initWithFrame:CGRectMake:
                                (0, cell.frame.size.height-1, 
                                   cell.frame.size.width, 1)];
[separatorView setBackgroundColor:[UIColor lightGrayColor]];
[separatorView setAlpha:0.8f];
[cell addSubView:separatorView];
此视图的宽度为1像素,与默认分隔符相同,它在底部延伸单元格的长度

由于cellForRowAtIndexPath的调用频率仅与您在NumberOfRowInSection中指定的频率相同,因此这些子视图将仅为具有数据且应具有分隔符的单元格创建


希望这有帮助。

我遇到了一个类似的问题,即如何仅显示包含数据的单元格的分隔符。tableView在分配给它的宽度和高度的区域中呈现尽可能多的行。您在numberOfRowsInSection中指定的号码仅用于确定它应该调用cellForRowAtIndexPath的次数

为了克服空单元格分隔线渲染的困难,我执行了以下操作:

UIView *separatorView = [[UIView alloc] initWithFrame:CGRectMake:
                                (0, cell.frame.size.height-1, 
                                   cell.frame.size.width, 1)];
[separatorView setBackgroundColor:[UIColor lightGrayColor]];
[separatorView setAlpha:0.8f];
[cell addSubView:separatorView];
禁用整个tableView的分隔符。您可以在Interface builder中的tableview检查器中执行此操作,也可以通过调用[yourTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]

在cellForRowAtIndexPath中,使用单元格填充tableview创建新的UIView并将其设置为单元格的子视图。此视图的背景为浅灰色,略微透明。您可以通过以下方法实现此目的:

UIView *separatorView = [[UIView alloc] initWithFrame:CGRectMake:
                                (0, cell.frame.size.height-1, 
                                   cell.frame.size.width, 1)];
[separatorView setBackgroundColor:[UIColor lightGrayColor]];
[separatorView setAlpha:0.8f];
[cell addSubView:separatorView];
此视图的宽度为1像素,与默认分隔符相同,它在底部延伸单元格的长度

由于cellForRowAtIndexPath的调用频率仅与您在NumberOfRowInSection中指定的频率相同,因此这些子视图将仅为具有数据且应具有分隔符的单元格创建

希望这有帮助。

设置

urtableview.frame=(x,y,width,[rowheight * num of rows])
设置


如果不需要节或页脚,请为表提供一个空页脚

在viewDidLoad中添加

tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

另一种方法是返回一个空的页脚视图。如果您需要上一节的页脚,这一点尤其有用

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    return [[UIView alloc] initWithFrame:CGRectZero];
}
最后,这里是另一个与实现此目的的其他方法的链接


如果不需要节或页脚,请为表提供一个空页脚

在viewDidLoad中添加

tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

另一种方法是返回一个空的页脚视图。如果您需要上一节的页脚,这一点尤其有用

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    return [[UIView alloc] initWithFrame:CGRectZero];
}
最后,这里是另一个与实现此目的的其他方法的链接


添加一个空uiview作为tableview的底部视图


tabelview.tableFooterView=UIView

添加一个空UIView作为tableview的底部视图


tableView.tableFooterView=UIView

能否将您的-nsintegerNumberOfSection粘贴到tableView:UITableView*tableView和-NSIntegertableView:UITableView*tableView行数Section:NSIntegersection代码中。您是否使用分组表视图?能否显示您的代码?您是如何向单元格中添加数据的?请粘贴您的-NSInteger
NumberOfSectionsTableView:UITableView*表格视图和-NSIntegertableView:UITableView*表格视图行数Section:NSIntegersection代码。您是否使用分组表视图?能否显示您的代码?如何将数据添加到单元格中?是的,我使用的是该值,但是在模拟器中呈现的行更多。你可以用一个简单的例子来试试。如果你使用数组计数,你确定只有2个对象吗?不可能有比您在numberOfRowsInSection中定义的更多的单元格:如果您要否决某个答案的人,请至少留下一条注释说明原因。是的,我正在使用该值,但是,在模拟器中呈现的行更多。你可以用一个简单的例子来试试。如果你使用数组计数,你确定只有2个对象吗?不可能有比您在numberOfRowsInSection中定义的单元格更多的单元格:如果您要否决某个答案的人,请至少留下一条注释说明原因。或者,您可以将表格设置为分组,然后通过以下方式禁用背景:self.tableView.backgroundColor=[UIColor clearColor],如果在iPad上self.tableView.backgroundView=nil或者,您可以将表格设置为分组,然后通过self.tableView.backgroundColor=[UIColor clearColor]禁用背景,如果在iPad上self.tableView.backgroundView=nil,添加页脚视图与生成的行数有什么关系?java_pill不是问如何只生成2行,java_pill问的是如何摆脱这样一个事实,即UITableView默认情况下使用行填充包含的UIView,而不考虑内容。这解决了这个问题。我认为你需要再次阅读这个问题。但是,当在模拟器中运行时,我看到在表视图中呈现额外的空行,额外的行,aka方法numberOfSectionsInTableView:和numberOfRowsInSection:告诉UITableView要呈现的行之外的行。这就是您刚才所说的,询问如何摆脱这样一个事实,即UITableView默认情况下使用行填充包含的UIView,而不考虑内容。这与您的上一条评论相矛盾。添加页脚视图与生成的行数有什么关系?java_pill不是问如何只生成2行,java_pill是问如何摆脱这样一个事实,即UITableView默认情况下使用行填充包含的UIView,而不考虑内容。这解决了这个问题。我认为你需要再次阅读这个问题。但是,当在模拟器中运行时,我看到在表视图中呈现额外的空行,额外的行,aka方法numberOfSectionsInTableView:和numberOfRowsInSection:告诉UITableView要呈现的行之外的行。这就是您刚才所说的,询问如何摆脱这样一个事实,即UITableView默认情况下使用行填充包含的UIView,而不考虑内容。这与你最后的评论相矛盾。