我正在开发我的第一个iOS应用程序,我一直在努力坚持良好的MVC实践,并制定了约定,使我的应用程序易于维护和重新开发。我正在使用Storyboard,在很大程度上我会使用Push segues来浏览我的应用程序。这是我的故事板的快照。
单击“添加人员”时,推送segue将移至“选择人员”。选择员工后,我选择了我想要的员工,然后可以返回上一个VC。我应该提一下,每个VC都有自己的.m
和.h
,我从UIViewController继承了它。这是使用时的样子。
现在,我已经将选定的数据行传回第一个VC了。我的问题是我不知道如何最好地将数据从一个VC推送回VC。在Select Staff VC中,我有一个数组(currentSelected
)正确保存所选行的字符串,但是我想在回滚后在Create VC中访问此数组。
我最好怎么做呢?
P.S。值得注意的是,我意识到这个问题存在类似的问题,但它们要么是针对略有不同的问题,要么稍微复杂,要么是旧版本的XCode,它们谈论的是XIB和东西。过去我一直在研究有关这个问题的文献而无法取得有效进展,所以我希望这能解释为什么我提出这个问题。
答案 0 :(得分:4)
您可以使用阻止或委托。我个人推荐了一个块,因为你保持代码的逻辑分组。有了块,你必须做那样的事情。在SelectStaff.h文件中,在interface:
之前添加typedef// I use NSString as an example but for your project more accurate would be NSArray
typedef void (^ReturnBlock)(NSString *arg);
在@interface之后但在@end之前添加属性:
@property(copy) ReturnBlock returnBlock;
在SelectStaff.m中有数据时(可能在你的保存:方法或解雇:) 使用您要传递的数据调用块;
if (returnBlock)
returnBlock(@"Data will be passed do previous view controller");
在prepareForSegue的CreateViewController.m中:添加块:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"YOUR_IDENT_FROM_STORYBOARD"])
{
SelectStaff *selStuff = (SelectStaff*)[segue destinationViewController];
[selStuff setReturnBlock:^(NSString *arg){
// This are your data
NSLog(@"Arg: %@", arg);
}];
}
}
希望得到这个帮助。