2014-04-04 45 views
0

基本上,我正在製作一個使用可用事件的日曆應用程序。ios:是否有一個函數在您更改可用節時調用?

該設置基本上是一個在uitableview之上的酒吧,其中酒吧有一個7天的7個部分。當您滾動查看活動時,我想要更改欄以反映您正在查看的那一天。這就像幻想一樣。

是否有一個函數在段落標題碰到屏幕頂部時被調用?

謝謝!

+1

也許實現'tableView:willDisplayHeaderView:forSection:'並檢查標題視圖的框架來確定它的位置。 – Paulw11

回答

1

,誰想要做到這一點在未來,這是我做的。 蒂姆的答案不起作用,因爲即使您滾動,零點始終位於表格的頂部。所以,我用他的「sectionAtTop」的想法

NSIndexPath *indexPath = [[self.tableView indexPathsForVisibleRows]objectAtIndex:0]; 
sectionAtTop = indexPath.section; 

這需要可見的第一個單元格,並採取它的索引路徑。這工作,但我需要把它放在一個地方,它會更新得當。最後我把它放在

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 

但是,這帶來另一個問題,因爲某些原因scrollviewdidscroll正在填充我的細胞之前被調用,因此它結束了(在索引0無對象)

崩潰的應用程序

所以我創建了一個名爲「tableDidLoad」的布爾值並將其設置爲NO。然後,在單元格完成填充的代碼的底部,我將boolean tableDidLoad設置爲true。所以,我的代碼看起來像

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if (tableDidLoad) { 
     NSIndexPath *indexPath = [[self.tableView indexPathsForVisibleRows]objectAtIndex:0]; 
     sectionAtTop = indexPath.section; 
     [self changeDOW]; 
    } 
} 

其中changeDOW是所謂的與不期望的方法調用switch語句的功能。

1

比方說你有一個叫sectionAtTop屬性,那麼這樣的事情應該工作:

- (void)setSectionAtTop:(NSInteger)sectionAtTop 
{ 
    if (_sectionAtTop != sectionAtTop) { 
     _sectionAtTop = sectionAtTop; 
     // update the top bar here with the new section number 
    } 
} 

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:CGPointZero]; 
    self.sectionAtTop = indexPath.section; 
} 
+0

沒有結束工作,但帶領我走向正確的方向。謝謝! – cwRichardKim

+0

啊,是的,你說得對。在表視圖的邊界而不是框架中指定了忘記點。 –

相關問題