THE_DOM的答案很好,但这是我如何解决我的问题。
要查看我们是否需要模态继续,我们检查并查看我们的愿望清单是否在下面的委托方法中没有项目。如果没有,我们会告诉它继续。如果它确实有物品,push 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
,我们设置一个BOOL
指示拍了拍一个空的心愿用户(这是我们的目的地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
}
}
'viewDidAppear'是一个坏主意。这会在很多情况下再次被调用,例如用户切换应用程序并返回,或者解除模态显示的视图控制器。 –