我在这里遇到一些困难。我正在设置一个UITableView,用户可以在其中添加内容。我已经完成了AddViewController,用户可以通过按UIBarNavigationButton上的+,然后将Segue推送到我的AddViewController来实现。
这里我的AddViewController是一个存储用户数据的数组。现在如何在我的FirstViewController数组中获取UITableView中的数据?我正在考虑使用Save UIBarNavigationButton中的另一个Push Segue并将User数组推送到TableView数据中?
这是正确的方法吗?
亲切的问候
答案 0 :(得分:2)
继Tander所说的之后,你应该使用unwind segue 而不是推送。 Follow this example as a general guideline.
在FirstViewController
:
//FirstViewController.m
- (IBAction)setArrayFromPreviousController:(UIStoryboardSegue *)segue
{
AddViewController *controller = [segue sourceViewController];
//old array and new array are the two array variable names
[self setOld_array:[controller new_array]];
}
或者,您可以使用协议方法和委托。这有点复杂:
可以找到关于如何完成此任务的精彩教程here.
答案 1 :(得分:1)
如果你问是否应该使用 push segue将数据移回以前的控制器,答案是否定的。
你可以做的是使用展开 segues:
https://developer.apple.com/library/ios/technotes/tn2298/_index.html
答案 2 :(得分:1)
为了将数据从B ViewController转换为ViewController,您可以使用Unwind Segue,Protocols和Delegate以及Blocks。 在这里,我向您展示如何使用Protocol& amp;委托。
在 B VC中,在H文件中添加
1)就在@interface
:
@protocol addDataProtocol <NSObject>
-(void)addData:(NSArray *)arrayData;
@end
2) dd属性
@property(nonatomic,retain)id<addDataProtocol>delegate;
3)在M文件中,就在[self.navigationController popViewControllerAnimated:YES];
添加之前:
[self.delegate addData:yourArray];
4)在 A VC中:
在推送之前确认代表,例如:objBViewController.delegate=self;
5)调用方法:
-(void)addData:(NSArray *)arrayFromB
并访问 arrayFromB 。
答案 3 :(得分:0)
在你的TVC上,你必须创建一个接受UIStoryboardSegue的动作(我认为)。在AddVC上,您可以按住退出按钮到故事板场景上的绿色小图标。然后你将一个与另一个相吻合。您剩下要做的就是在AddVC上实现prepareForSegue,这样您就可以将阵列传递回TVC了。顺便说一下,对TVC的行动也应该接受你传递的阵列。
你可以在youtube上进行搜索,必须有一个关于它的教程。