THE_DOM 的回答很好,但这就是我解决问题的方法。
要查看是否需要模态分割,我们在下面的委托方法中检查并查看我们的愿望清单中是否没有项目。如果没有,我们告诉它继续。如果它确实有项目,则推送 segue 将自动被调用(在 IB 中设置)。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
Wishlist *wishlist = [self.fetchedResultsController objectAtIndexPath:indexPath];
if([wishlist.items count] == 0) {
// execute our segue
[self performSegueWithIdentifier:@"editWishlistItems" sender:self];
}
}
在我们的prepareForSegue
中,我们设置了 aBOOL
来指示用户点击了一个空心愿单(这是在我们的目标 VC 中)。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
... // other segues
if([segue.identifier isEqualToString:@"editWishlistItems"])
{
UINavigationController *navigationVC = (UINavigationController *)segue.destinationViewController;
ManageWishlistItemCDTVC *manageWishlistItemVC = (ManageWishlistItemCDTVC *)navigationVC.topViewController;
manageWishlistItemVC.tappedOnEmptyWishlist = YES;
manageWishlistItemVC.wishlist = [self.fetchedResultsController objectAtIndexPath:indexPath];
}
}
然后,当我们放松时,我们检查BOOL
是YES
还是NO
。
- (IBAction)saveWishlistItem:(UIStoryboardSegue *)segue {
ManageWishlistItemCDTVC *manageWishlistItemVC = (ManageWishlistItemCDTVC *)segue.sourceViewController;
// check to see if we came from edit segue or add segue
if(manageWishlistItemVC.tappedOnEmptyWishlist) { // edit segue
// saved edited wishlist
} else { // add segue
if([manageWishlistItemVC.selectedItems count] > 0) {
// save new wishlist
}
}