在UITableView中隐藏空单元格

时间:2010-07-14 17:09:50

标签: iphone objective-c uitableview uisearchbar

我有一个可搜索的tableview,但是只想显示用户开始搜索后返回的单元格数。例如,如果用户键入charecter并且只有一个单元格与搜索匹配,则剩余单元格表格的剩余单元格为空。我想知道是否有办法隐藏那些空单元格。我还想知道如果一个人的搜索与任何数据都不匹配,是否有办法隐藏表格视图(默认情况下,它会显示一个空单元格表,表示“无结果”)。

感谢。

8 个答案:

答案 0 :(得分:61)

tableFooterView设置为某个虚拟视图([[UIView new] autorelease]将正常工作)。这会提示UITableView显示页脚(其大小为零)以代替空的“单元格”。

答案 1 :(得分:23)

- (void) viewDidLoad
{
  [super viewDidLoad];
 *// self.tableView.tableFooterView = [[[UIView alloc] init] autorelease];*   
  *//Since memory management is controlled by ARC now, so ignore autorelease*
  self.tableView.tableFooterView = [[UIView alloc] init] ;
}

答案 2 :(得分:5)

更改数据源中tableView:numberOfRowsInSection:的实施,以返回搜索结果的数量,而不是项目总数。然后使用搜索结果而不是其余数据填充这些单元格。

答案 3 :(得分:0)

简单你可以使用它..

tableView.tableFooterView = [UIView new];

答案 4 :(得分:0)

对于swift 2.x xCode 7:

override func viewDidLoad() {
        super.viewDidLoad()
        print("∙ \(NSStringFromClass(self.dynamicType))")
        ...
        self.tableView.tableFooterView = UIView()
}

答案 5 :(得分:0)

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
       if (([array count]*65) > [UIScreen mainScreen].bounds.size.height - 66)
        {
          Table.frame = CGRectMake(0, 66, self.view.frame.size.width, [array count]*65)); 
        }else
       {
         Table.frame = CGRectMake(0, 66, self.view.frame.size.width, [UIScreen mainScreen].bounds.size.height - 66);
        }
        return [array count];
}

这里65是单元格的高度,66是UIViewController中导航栏的高度。

答案 6 :(得分:0)

对于xcode中的swift

    cell.userInteractionEnabled = false

将其放在单元格的末尾,用于表格索引处的行

答案 7 :(得分:0)

在Swift中隐藏空单元格

Swift 3 Edition

 override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    self.tableView.tableFooterView = UIView(frame: CGRect.zero)
}

Swift 2 Edition

 override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    self.tableView.tableFooterView = UIView(frame: CGRectZero)
}