将数据传递回上一个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链接
慕森卡
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)}
- 3 回答
- 0 关注
- 668 浏览
添加回答
举报
0/150
提交
取消