为了账号安全,请及时绑定邮箱和手机立即绑定

将数据传递回上一个viewcontroller

将数据传递回上一个viewcontroller

开满天机 2019-08-06 17:23:19
将数据传递回上一个viewcontroller我正在尝试将数据传递回以前的viewController。有谁知道如何将数据从ViewController B传递回ViewController A?所以我想要一个字符串'从'BIDAddTypeOfDealViewController转到BIDDCCreateViewController。用户编辑了viewController B,我想在ViewController A中返回已编辑的数据然后我使用它。我正在使用此答案的“传递数据”部分。我的不同之处:第3点和第6点只是在弹出视图时提及,所以我将该代码放在viewWillDisappear中。我认为这是正确的吗?同样在Point 6,我没有使用nib进行初始化,因为它已经过时了。我正在使用故事板。而且我没有添加最后一行,因为我不相信我会推动它。按我的故事板上的按钮已经让我前进了。我认为问题可能出现在BIDDCCreateViewController中,我有方法,但我无法运行它。要运行一个方法,它应该[自我方法]。我无法做到这一点。那就是我猜的。它编译并运行良好,没有任何记录,所以我不知道它是否有效。
查看完整描述

3 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

您可以使用代理人。因此,在ViewController B中,您需要创建一个将数据发送回ViewController A的协议。您的ViewController A将成为ViewController B的委托。

如果您不熟悉目标C,请查看什么是代表

在ViewControllerB.h中创建协议:

#import <UIKit/UIKit.h>@protocol senddataProtocol <NSObject>-(void)sendDataToA:(NSArray *)array; //I am thinking my data is NSArray, you can use another object for store your information. @end@interface ViewControllerB : UIViewController@property(nonatomic,assign)id delegate;

ViewControllerB.m

@synthesize delegate;-(void)viewWillDisappear:(BOOL)animated{
     [delegate sendDataToA:yourdata];}

在ViewControllerA中:当你转到ViewControllerB时

ViewControllerA *acontollerobject=[[ViewControllerA alloc] initWithNibName:@"ViewControllerA" bundle:nil];acontollerobject.delegate=self; // protocol listener[self.navigationController pushViewController:acontollerobject animated:YES];

并定义你的功能:

-(void)sendDataToA:(NSArray *)array{
   // data will come here inside of ViewControllerA}

编辑:

您可以查看此示例:如何将数据传递回上一个viewcontroller:Tutorial链接


查看完整回答
反对 回复 2019-08-06
?
慕森卡

TA贡献1806条经验 获得超8个赞

短和更简单的比协议/委托方法是创建一个闭合:

用于在我的情况下发回一个字符串。在ViewControllerA中:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let viewControllerB = segue.destination as? ViewControllerB {
        viewControllerB.callback = { message in            //Do what you want in here!
        }
    }}

在ViewControllerB中:

var callback : ((String) -> Void)?@IBAction func done(sender: AnyObject) {
    callback?("Hi")
    self.dismiss(animated: true, completion: nil)}


查看完整回答
反对 回复 2019-08-06
  • 3 回答
  • 0 关注
  • 668 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信