2013-04-02 67 views
2

我有一個UITableView超過50行,但一次只顯示5個。我如何強制中間行始終被選中?例如2,3,4,5,6顯示,4將被選中。 用戶滾動 - > 14,15,16,17,18,16將被選中等。UITableView - 總是選擇中間的行

由於

+0

你真的想要這樣選擇嗎?還是想在中間一排有一些奇特的覆蓋層? – viral

+0

想想吧,兩者。但選擇的部分是我所追求的。 – Segev

+0

這是UIPickerView的目的我認爲 –

回答

3

這種方法工作得很好,我。我有一次顯示5行的表格視圖,但是當我記錄visibleRows時,我總是得到7的計數,所以我得到這七個索引路徑,並選擇中間一個(索引3):

-(void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    NSArray *vis = self.tableView.indexPathsForVisibleRows; 
    if (vis.count %2 == 1) { 
     [self.tableView selectRowAtIndexPath:vis[3] animated:NO scrollPosition:UITableViewScrollPositionNone]; 
    } 
} 
+0

閱讀是一個非常好的主意。我會盡快進行測試。謝謝 – Segev

0

使用tableView:willDisplayCell:forRowAtIndexPath:方法是UITableViewDelegate協議的一部分。

在這裏您可以檢查indexPath.row值,如果它在您指定的範圍內,請使用cell.selected。

更多信息: http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDelegate_Protocol/Reference/Reference.html

雖然我建議你保持與否細胞應您的數據源中進行選擇,而不是掛接到一個單元格的位置,這樣,如果一個單元格,你可以檢查你的數據源應該被選中,而不是強迫自己爲特定的事情使用特定的索引單元格。

希望這會有所幫助。

+0

謝謝。我熟悉'tableView:willDisplayCell:forRowAtIndexPath:'。問題是如何判斷我得到的index.row是在列表的頂部,中間還是末尾 – Segev

+0

您不應該使用視圖來確定選擇什麼,但是您的數據源,這會變得微不足道使用數據源。在回答你的問題時,你可以從數據源方法numberOfRowsInSection:中得到一段中的行數,從中可以確定當前的indexPath.row是否在頂部/中間/底部。 – Tim

0

目的是UIPickerView定製我認爲,

看看herequestion將幫助您