仅显示UITableView中的第一行

时间:2014-07-22 14:36:32

标签: objective-c uitableview ios7 storyboard

所以,大多数问题都是“我的tableView只显示第一行,出了什么问题?”。 好吧,我需要的恰恰相反。

我有一个SearchBar(不是Search Display Controller),在用户开始输入之前,我只想显示第一行而不是其他内容。

我的TableView内容为Dynamic Prototypes,内容为Prototype Cells。 第一个是我想要展示的唯一一个,但它显示其他的空白。

https://www.dropbox.com/s/q4ak6z3gbc0gh5c/Screenshot%202014-07-22%2011.24.22.png

这是我的tableView:numberOfRowsInSection:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    NSInteger numberOfRows = 0;

    if ([self.searchBar.text isEqualToString:@""]) {
        numberOfRows = 1;
    }

    return numberOfRows;
}

所有帮助将非常感谢! \ O /

4 个答案:

答案 0 :(得分:1)

可能有一个更好的解决方案,但正如之前提出的那样:

CGRect frame = [self.tableView frame];

frame.size.height = [self tableView:self.tableView heightForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];

self.tableView.frame = frame;

答案 1 :(得分:0)

在您的视图控制器中-tableView:numberOfRowsInSection:确保tableView等于self.tableView,然后返回1:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (tableView == self.tableView) {
        return 1;
    } else {
        return yourDataModel.count;
    }
}

答案 2 :(得分:0)

您必须在创建(alloc)时更改UITableView的contentView或框架的大小。

默认情况下(44px)或自定义,此高度必须与UITableViewCell相同。

答案 3 :(得分:0)

写下以下4行以制作一行表格。如果要扩展表的内容,只需使tableview可滚动。

tblView                     = [[UITableView alloc]initWithFrame:CGRectZero];
tblView.separatorColor      = [UIColor clearColor];
tblView.tableFooterView     = [[UIView alloc] initWithFrame:CGRectZero];    
tblView.scrollEnabled       = NO;