2010-01-11 117 views
1

我有一個表格視圖,這是許多情況下將只有一個或兩個單元格不填充屏幕。在這種情況下,我希望細胞坐在底部,而不是頂部。換句話說,他們應該「捕捉」到tableview的底部。獲取UITableView從底部/捕捉到底部滾動,而不是頂部

我可以強制表視圖,以他們滾動到這樣的底部:

CGPoint bottomOffset = CGPointMake(0, [self.tableView contentSize].height - self.tableView.frame.size.height); 
    [self.tableView setContentOffset:bottomOffset animated:NO]; 

然而,這僅僅是部分成功。首先,如果我將它放在viewDidLoad或viewWillAppear中,它只能在viewDidAppear中使用,這意味着用戶首先看到桌面視圖的頂部單元格,然後移動到底部。其次,如果他們滾動表格視圖,當他們放開它時,它會自動「捕捉」回到頂部。

有誰知道如何改變這種行爲?

回答

4

要考慮的一個選擇是根據要顯示的行數調整UITableView本身的大小。假定你的UITableViewDelegate實現了heightForRowAtIndexPath,那麼你可以在viewWillAppear方法中設置UITableView的高度,方法是將行數乘以每行的高度。

事情是這樣的:

CGRect frame = [myTableView frame]; 

frame.size.height = [[myTableView dataSource] tableView: myTableView numberOfRowsInSection: 0] * 
        [[myTableView delegate] tableView: myTableView heightForRowAtIndexPath: [NSIndexPath indexPathForRow: 0 inSection: 0]]; 

[myTableView setFrame: frame]; 

這個例子假設你的表有一個部分,每一行都是相同的高度。如果涉及多個部分或者如果不同的行可能具有不同的高度,則計算大小將不得不變得更復雜一些。

無論如何計算高度,這個想法的本質雖然是讓表格本身更短,不比它顯示的一兩行更高,而不是試圖強迫它表現不同。

相關問題