如何在放松segue中找出哪个segue称为目的地?

swi*_*ode 4 objective-c uiviewcontroller ios segue

我有一个放松的segue WishlistVC(一个列出所有愿望清单的VC).现在,这个VC允许用户点击心愿单,如果它是空的,则调出EditWishlistItemsVC,这样就可以选择要放入心愿单中的项目.WishlistVC还有另一个按钮,允许用户创建新的愿望清单,然后调用,EditWishlistItems以便用户可以将项目添加到新的愿望清单.这两者都是同一VC的不同段.

当我放松时,我想知道是谁调用了EditWishlistItemsVC,即我在unwind segue中执行了哪个segue.如果它来自addItemsToWishlist模态segue,那么我想将心愿单添加到核心数据,如果它来自editWishlistItems模态segue,我想编辑愿望清单中的CD项目.

当我放松时,有什么方法可以知道这些信息吗?

小智 6

我会通过添加一个属性来做到这一点

@property (nonatomic, strong) NSString *recentSegue;
Run Code Online (Sandbox Code Playgroud)

然后创建

-(void)addItemsToWishList:{
     //business logic
     self.recentSegue = @"addItems";
    [self performSegueWithIdentifier:@"EditWishlistItems" sender:self];
}

-(void)editWishListItems:{
    //business logic
    self.recentSegue = @"editItems";
    [self performSegueWithIdentifier:@"EditWishlistItems" sender:self];
}
Run Code Online (Sandbox Code Playgroud)

然后将按钮链接到这些方法,而不是直接执行segues

最后

-(void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
     if(self.recentSegue){
          if(self.recentSegue isEqualToString:@"addItems") { 
               //do Whatever
          } else if(self.recentSegue isEqualToString:@"editItems") { 
               //do whatever else
          }
          self.recentSegue = nil;
     }
}
Run Code Online (Sandbox Code Playgroud)

虽然这应该有效,但根据您的设计可能更好的另一种方法是让EditWishListItems直接处理coredata交互.