2015-10-13 86 views
1

關於點擊單元格有很多問題。這個問題是關於顯示單元格的。我有一個按小時細胞的桌面視圖。objc - 如何根據時間將tableview滾動到單元格?

我希望tableview滾動到「now」。這可能嗎?

我可以改變一個單元格的顏色是這樣的: (在cellforRowAtIndexPath

首先構造兩個UNIX時代 - 一個現在,另一個用於傳入的時間。然後,只需

if (time == 1) { //future 

     time = 0; 
     cell.nameLabel.textColor = [UIColor yellowColor]; 
     cell.detailLabel.textColor = [UIColor yellowColor]; 

    } else { //past 
     cell.nameLabel.textColor = [UIColor redColor]; 
     cell.detailLabel.textColor = [UIColor redColor]; 


    } 

我正看着:

[scrollToRowAtIndexPath:indexPath atScrollPosition:scrollPosition animated:]但我不知道我在正確的軌道上,也不知道如何使用這種方法。謝謝你的幫助。

+1

這是你需要使用的方法,但你需要確定你想要滾動的單元格的indexPath - 大概你可以使用NSDateComponents獲得當前的小時 – Paulw11

+0

感謝你。我知道如何製作日期組件,但我該如何使用該方法?我大概必須遍歷表,直到我可以確定一個特定的時間。我不知道如何將迭代鏈接到滾動方法。如果您可以向我介紹如何使用此方法的示例,那可能會打開我的眼睛。 –

+0

您的數據模型如何映射到您的表格?你是否只有24小時數組,或者數組中有任意數量的對象,每個對象都有自己的日期字段? – Paulw11

回答

1

您還沒有表現出你確切的數據模型,但假設有對象的數組,每個都有一個NSDate屬性,你會使用類似

-(void) scrollToHour:(NSInteger)targetHour { 
    NSCalendar *calendar = [NSCalendar currentCalendar]; 
    for (int i=0;i<self.dataObjects.count;i++) { 
     MyObject *myObject=self.dataObjects[i]; 
     NSDateComponents *components = [calendar components:NSCalendarUnitHour fromDate:myObject.date]; 
     NSInteger hour = [components hour]; 
     if (hour >= targetHour) { 
      [self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0] atScrollPosition:UITableViewScrollPositionMiddle animated:YES]; 
      break; 
     } 
} 
+0

謝謝。這工作正常,除了一個問題...我應該從哪裏調用方法? 'cellForRowAtIndexPath'不能正確,因爲我無法正常滾動。 –

+0

你想要什麼時候發生滾動?當視圖第一次顯示時,「viewWillAppear」可能是一個不錯的選擇。數據完成從某個源加載之後 - 在加載數據時調用它。當用戶點擊「現在」按鈕時 - 在按鈕動作處理程序 – Paulw11

+0

okeydoke中。非常感謝..讓我完成這個,然後我會標記它完成.. –

相關問題