我試着打印出多少行和節這讓我想,有多少部分我會在表視圖數據源方法返回在更新過程中實際上是在分別的tableView ...這是罪魁禍首:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 0;
}
確保你正在返回1和0不
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
至少這解決了這個問題對我來說...
UPDATE:
我再有同樣的問題這是工作一段時間後
。我修改了一下應用程序。我的第一個視圖是一個tableView,當你點擊右上角的加號按鈕時,你會得到另一個表格,你可以輸入信息。當您單擊完成後,將信息添加到與此代碼的核心數據模型:
- (IBAction)doneButtonPressed:(UIBarButtonItem *)sender
{
MoneyBadgeAppDelegate *appDelegate =
[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context =
[appDelegate managedObjectContext];
NSManagedObject *newMoment;
newMoment = [NSEntityDescription
insertNewObjectForEntityForName:@"SpendingMoment"
inManagedObjectContext:context];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyyMMdd"];
NSDate *modifiedDate = [dateFormat dateFromString: self.dateTextField.text];
[newMoment setValue: modifiedDate forKey:@"date"];
[newMoment setValue: descTextField.text forKey:@"desc"];
[appDelegate.eventsArray insertObject:newMoment atIndex:0];
NSError *error;
[context save:&error];
[self dismissViewControllerAnimated:YES completion:nil];
}
我證實,它被通過打印到控制檯回國後在我的viewDidAppear方法如下放入核心數據模型成功地回到第一個屏幕。
-(void)viewDidAppear:(BOOL)animated{
NSEntityDescription *entity = [NSEntityDescription entityForName:@"SpendingMoment"
inManagedObjectContext:self.managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:entity];
NSError *error;
NSArray *items = [self.managedObjectContext
executeFetchRequest:fetchRequest error:&error];
for (SpendingMoment *moment in items) {
NSLog(@"Date: %@, Desc: %@", [moment date], [moment desc]);
}
[self addEvent];
然後我的addEvent方法做到這一點:
- (void)addEvent {
[self.tableScreen beginUpdates];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableScreen insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationFade];
[self.tableScreen reloadData];
[self.tableScreen endUpdates];
@try{
[self.tableScreen scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
@catch(NSException *exception){
}
}
任何想法是什麼問題,這個時候???謝謝!
我已經做到了.. [timeZoneNames insertObject:@「HELLO」atIndex:0]; 行數總是大於1.仍然收到此錯誤.. – insomiac 2012-07-29 19:18:55
返回類型numberOfRowsInSection爲[timeZoneNames count]; 使用insertRowsAtIndexPaths沒有beginUpdates和endUpdates是好的嗎? – insomiac 2012-07-30 03:16:06
@Aby從'-beginUpdates'文檔:「如果您希望後續插入,刪除和選擇操作(例如,cellForRowAtIndexPath:和indexPathsForVisibleRows)同時進行動畫,請調用此方法。」它用於將多個UI操作分組爲單個UI操作:只有一個操作。 – 2012-07-30 10:55:55