我正在尝试将数据传递回上一个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>//将此委托用于用户输入的数据
@属性(非原子,赋值)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链接