2010-12-17 58 views
1

我有一個自定義字段的表格中的單元格,允許使用自定義數字鍵盤輸入數字。這包括一個標籤。當從表格底部切換到頂部時,我需要(i)將表格滾動到頂部並(ii)選擇該表格中的自定義字段。滾動到單元格,然後得到子視圖

我發現如果我在調用scrollToRowAtIndexPath之後直接調用cellForRowAtIndexPath,則前者返回一個空單元格。如果再次調用,在滾動完成後,單元格按預期返回。我需要單元格,以便通過標記值獲取自定義視圖,然後選擇它。

我一直在努力尋找解決方案。有人可能會在滾動後插入一個延遲來完成。但我試過使用performSlector:withObject:afterDelay而沒有成功。

這是我按代碼時調用的代碼。

-(void) customDualViewTabbed:(CustomDualView *)dualView { 

UITableViewCell *cell=(UITableViewCell*)([dualView superview].superview); 
NSIndexPath *fromIndexPath=[self.tableView indexPathForCell:cell]; 
NSIndexPath *toIndexPath; 

if ((fromIndexPath.row+1)<[self.tableView numberOfRowsInSection:fromIndexPath.section]){ 
    toIndexPath = [NSIndexPath indexPathForRow:(fromIndexPath.row+1) inSection:fromIndexPath.section]; 
} 
else { 
    toIndexPath = [NSIndexPath indexPathForRow:0 inSection:fromIndexPath.section]; 
    [[self tableView] scrollToRowAtIndexPath:toIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES]; 
} 

//get cell we tabbed to 
cell=[self.tableView cellForRowAtIndexPath:toIndexPath]; 

CustomDualView *dualView2 =(CustomDualView *)[cell viewWithTag:dualView.tag]; 

[dualView2 setSelected:(SelectedState)SelectedLeftTabbed]; 
} 

回答

1

UITableView中的單元格只在需要時加載。因此,如果要滾動的單元位於當前屏幕外的索引處,則將從cellForRowAtIndexPath獲得零響應。

現在,由於UITableview符合UIScrollViewDelegate協議,因此除了UITableViewDelegate方法之外,還可以實現這些委託方法。實施一個你知道的將在你的手機看到時被調用,如scrollViewDidEndDecelerating:,然後撥打cellForRowAtIndexPath可能會訣竅。

+0

謝謝馬特。我結束了使用scrollViewDidEndScrollingAnimation。它工作得很好。 – fezfox 2010-12-18 01:12:12

+0

很高興聽到它! – 2010-12-18 06:52:46

相關問題