swi*_*ode 4 objective-c uiviewcontroller ios segue
我有一个放松的segue WishlistVC
(一个列出所有愿望清单的VC).现在,这个VC允许用户点击心愿单,如果它是空的,则调出EditWishlistItems
VC,这样就可以选择要放入心愿单中的项目.WishlistVC还有另一个按钮,允许用户创建新的愿望清单,然后调用,EditWishlistItems
以便用户可以将项目添加到新的愿望清单.这两者都是同一VC的不同段.
当我放松时,我想知道是谁调用了EditWishlistItems
VC,即我在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交互.