我想出了一個相當混亂的解決方案。它只是關於作品,但我相信肯定會有更優雅和簡單的東西。無論如何,這是我目前的工作。
首先,UITableView是音符的UIViewController的委託。該筆記的UIViewController有一個名爲「editingIndexPath」的屬性,它是UITableView中該筆記的indexPath。當用戶按下「前記」按鈕,下面的方法被稱爲:
- (void)backAction:(id)sender
{
NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:editingIndexPath.row-1 inSection:editingIndexPath.section];
[self.delegate editingViewControllerDidRequestObjectAtIndexPath:newIndexPath];
}
然後在tableViewController的委託方法:
- (void)editingViewControllerDidRequestObjectAtIndexPath:(NSIndexPath *)indexPath
{
[self.navigationController popViewControllerAnimated:NO];
NoteEditViewController *detailViewController = [[NoteEditViewController alloc] init];
[self.navigationController pushViewController:detailViewController animated:animated];
Note *aNote = [self.fetchedResultsController objectAtIndexPath:indexPath];
detailViewController.noteTextView.text = aNote.text;
detailViewController.editingIndexPath = indexPath;
detailViewController.delegate = self;
[detailViewController release];
}
這工作,但它是相當不雅,並始終會導致在一個「流行」動畫中(從右到左),無論是去下一個音符還是前一個音符。我也用一些核心動畫搞砸了,但我相信我錯過了一個更簡單,更好的方法。
爲什麼不把你的筆記的NSManagedObject objectID轉發給音符控制器,並在那裏做一個獲取請求來確定下一個/上一個音符?你提出的方法似乎有點乏味。 – Schoob 2011-05-19 09:45:55
@Schoob我將如何處理UINavigationController?我仍然需要我的後退按鈕去tableView。 – 2011-05-19 16:16:03