目前我有一個NSMutableArray從我的應用中的NSUserDefaults加載並將數據提供給我的UITableView。 NSMutableArray由NSDictionarys組成,每個NSDictionarys由5或6個鍵組成。reloadData不適用於UITableView數據源?
然後在UITableView的視圖中,我有一個UISegmentedControl,然後用戶可以根據Date或其他東西對UITableView進行排序。
所以,當他們點擊日期段,我執行此代碼:
NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"Date" ascending:NO];
[self.cellArray sortUsingDescriptors:[NSArray arrayWithObject:descriptor]];
自己的作品,因爲我可以看到self.cellArray正在通過NSLogs分類排序。儘管當我將我的tableview調用到reloadData時,沒有一個NSDictionarys實際上在tableview本身中重新排序。所以編程方式他們正在排序,但不是在非常奇怪的用戶界面。
如果使用這種for語句代碼之後我上面貼:
for (NSDictionary *dict in self.cellArray) {
NSLog(@"DateKey: %@", [dict objectForKey:@"Date"]);
}
這是我的NSLogs樣子,如果我做上升:YES:
2012-05-20 13:48:21.008 App[71308:707] DateKey: 2012-05-13 18:19:22 +0000
2012-05-20 13:48:21.009 App[71308:707] DateKey: 2012-05-13 18:19:29 +0000
2012-05-20 13:48:21.009 App[71308:707] DateKey: 2012-05-15 01:54:13 +0000
2012-05-20 13:48:21.010 App[71308:707] DateKey: 2012-05-15 04:01:15 +0000
2012-05-20 13:48:21.011 App[71308:707] DateKey: 2012-05-16 04:08:20 +0000
2012-05-20 13:48:21.012 App[71308:707] DateKey: 2012-05-16 04:13:59 +0000
2012-05-20 13:48:21.012 App[71308:707] DateKey: 2012-05-16 04:32:29 +0000
2012-05-20 13:48:21.013 App[71308:707] DateKey: 2012-05-16 04:32:38 +0000
如果我做上升:不,這是我的NSLogs看起來像:
2012-05-20 13:56:25.956 App[71468:707] DateKey: 2012-05-16 04:32:38 +0000
2012-05-20 13:56:25.960 App[71468:707] DateKey: 2012-05-16 04:32:29 +0000
2012-05-20 13:56:25.961 App[71468:707] DateKey: 2012-05-16 04:13:59 +0000
2012-05-20 13:56:25.961 App[71468:707] DateKey: 2012-05-16 04:08:20 +0000
2012-05-20 13:56:25.962 App[71468:707] DateKey: 2012-05-15 04:01:15 +0000
2012-05-20 13:56:25.962 App[71468:707] DateKey: 2012-05-15 01:54:13 +0000
2012-05-20 13:56:25.963 App[71468:707] DateKey: 2012-05-13 18:19:29 +0000
2012-05-20 13:56:25.964 App[71468:707] DateKey: 2012-05-13 18:19:22 +0000
所以,你可以看到,排序確實工作正常,但在我在那個代碼之後做了reloadData,我的UITableView不會根據日期鍵重新排列單元格。
我的tableview實際上是連接在IB中,而不是零。如果這很重要,我確實有一個二傳手和一個吸氣器。
有沒有人知道爲什麼會發生這種情況?或者你需要更多的上下文/代碼?
謝謝!
向我們展示'tableView:cellForRowAtIndexPath:'。即它實際上是從'cellArray'讀取的嗎? – mattjgalloway
我加了我的cellForRowAtIndexPath –
我很困惑。這看起來很好。 'cellForRowAtIndexPath:'在'reloadData'後肯定被調用? – mattjgalloway