将数据返回到第一个ViewController

时间:2014-04-01 16:31:17

标签: ios objective-c uitableview

我在这里遇到一些困难。我正在设置一个UITableView,用户可以在其中添加内容。我已经完成了AddViewController,用户可以通过按UIBarNavigationButton上的+,然后将Segue推送到我的AddViewController来实现。

这里我的AddViewController是一个存储用户数据的数组。现在如何在我的FirstViewController数组中获取UITableView中的数据?我正在考虑使用Save UIBarNavigationButton中的另一个Push Segue并将User数组推送到TableView数据中?

这是正确的方法吗?

亲切的问候

4 个答案:

答案 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上进行搜索,必须有一个关于它的教程。