将数据传回上一个viewcontroller

我正在尝试将数据传递回上一个viewController

有人知道如何将数据从ViewController B传回ViewController A吗?所以我想要一个字符串从BIDAddTypeOfDealViewController转到BIDDCCreateViewController。用户编辑viewController B,我希望编辑后的数据返回到viewController A中,然后在那里使用它

我正在使用此答案的“传递数据回”部分。我的不同之处:第3点和第6点只提到了视图弹出的时间,所以我将代码放在ViewWillEnglish中。我认为这是正确的?
同样在第6点上,我没有用nib初始化,因为它是旧的。我在用故事板。我没有添加最后一行,因为我不相信我会推动它。按下故事板上的一个按钮已经让我前进了

我认为问题可能出现在BIDDCCreateViewController中,我有该方法,但无法运行它。要运行一个方法,它应该转到[self method]。我不能那样做。这正是我的猜测

它编译和运行良好,只是没有任何记录,所以我不知道它是否工作

更新:我无法获取要执行的“sendDataToA”方法

#导入<UIKit/UIKit.h>
#导入“BIDAddTypeOfDealViewController.h”
@接口BIDDCCreateViewController:UIViewController
@属性(强,非原子)NSString*placeId;
-(iAction)gotoBViewController:(id)发送方;
@结束
#导入“BIDDCCreateViewController.h”
#导入“BIDAddTypeOfDealViewController.h”
@BIDDCCreateViewController的实现
-(无效)viewDidLoad
{
[超级视图下载];
//加载视图后执行任何其他设置。
NSLog(@“成功通过地点ID:%@”,self.placeId);
}
-(void)sendDataToA:(NSString*)myStringData
{
NSLog(@“内部发送数据到”);
UIAlertView*alert=[[UIAlertView alloc]initWithTitle:@“您的字符串数据显示”消息:myStringData委托:自取消按钮:@“确定”其他按钮:nil];
[警报显示];
}
-(iAction)gotoBViewController:(id)发送方{
NSLog(@“按下”);
BIDAddTypeOfDealViewController*bidAddType=[[BIDAddTypeOfDealViewController alloc]init];
bidAddType.delegate=self;
}
@结束
@协议senddataProtocol<NSObject>
-(void)sendDataToA:(NSString*)myStringData;
@结束
#进口<UIKit/UIKit.h>
@接口BIDAddTypeOfDealViewController:UIViewController<UITextFieldDelegate&gt//将此委托用于用户输入的数据
@属性(非原子,赋值)id委托;
//其他文本字段输出不相关
-(iAction)选择DiscountDeal:(id)发件人;
@结束
#导入“BIDAddTypeOfDealViewController.h”
@接口BIDAddTypeOfDealViewController()
@结束
@实现BIDAddTypeOfDealViewController
@综合代表;
-(id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil
{
self=[super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
如果(自我){
//自定义初始化
}
回归自我;
}
-(无效)viewDidLoad
{
[超级视图下载];
}
-(无效)视图将消失:(BOOL)已设置动画
{
[代表sendDataToA:@“苹果”];
}
@结束

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

如果您对目标C不熟悉,请查看什么是委派

在ViewControllerB.h中创建协议:

#导入<UIKit/UIKit.h>
@协议senddataProtocol<NSObject>
-(void)sendDataToA:(NSArray*)数组//我认为我的数据是NSArray,你可以使用另一个对象来存储你的信息。
@结束
@界面ViewControllerB:UIViewController
@属性(非原子,赋值)id委托;

ViewControllerB.m

@综合委托;
-(无效)视图将消失:(BOOL)已设置动画
{
[delegate sendDataToA:yourdata];
}

在ViewControllerA中:当您转到ViewControllerB时

ViewControllerA*acontollerobject=[[ViewControllerA alloc]initWithNibName:@“ViewControllerA”bundle:nil];
acontolerObject.delegate=self;//协议侦听器
[self.navigationController pushViewController:acontollerobject动画:是];

并定义您的功能:

-(void)sendDataToA:(NSArray*)数组
{
//数据将在ViewControllerA内部显示
}

编辑:

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

发表评论