ios 跳转数据的传递

情景1: A-->B  需要把数据传递到B里

代码:

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1.  // 跳转 -- 执行login2contacts这个segue  
  2.   [self performSegueWithIdentifier:@"login2contacts" sender:nil];  
  3. 在执行performSegueWithIdentifier 跳转 时,会调用prepareForSegue 方法,在prepareForSegue 中拿到ViewController 来传递数据  
  4. /** 
  5.  *  执行segue后,跳转之前会调用这个方法 
  6.  *  一般在这里给下一个控制器传递数据 
  7.  */  
  8. - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender  
  9. {  
  10.     // 1.取得目标控制器(联系人列表控制器)  
  11.     UIViewController *contactVc = segue.destinationViewController;  
  12.       
  13.     // 2.设置标题  
  14.     contactVc.title = [NSString stringWithFormat:@"%@的联系人列表"self.accountField.text];  
  15.     // contactVc.title 等价于 contactVc.navigationItem.title  
  16. //    contactVc.navigationItem.title = [NSString stringWithFormat:@"%@的联系人列表", self.accountField.text];  
  17. }  
情景2 B—>A  当进入B时,B操作完成返回到A中,需要带回数据到A
思路,要想让B传递到A 首先创建一个代理对象,也就是新建一个协议, A来实现这个协议,那A就相当于一个代理, 然后把A的代理传入到B中,B来调用A中的协议中的方法
代码 B:

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #import <UIKit/UIKit.h>  
  2.   
  3.   
  4. @class MJAddViewController, MJContact;  
  5.   
  6.   
  7. @protocol MJAddViewControllerDelegate <NSObject>  
  8.   
  9.   
  10. @optional  
  11. //- (void)addViewController:(MJAddViewController *)addVc didAddContactWithName:(NSString *)name phone:(NSString *)phone;  
  12. - (void)addViewController:(MJAddViewController *)addVc didAddContact:(MJContact *)contact;  
  13. @end  
  14.   
  15.   
  16. @interface MJAddViewController : UIViewController  
  17. @property (nonatomic, weak) id<MJAddViewControllerDelegate> delegate;  
  18. @end  
  19.   
  20.   
  21. /** 
  22.  *  添加 
  23.  */  
  24. - (IBAction)add {  
  25.     // 1.关闭当前控制器  
  26.     [self.navigationController popViewControllerAnimated:YES];  
  27.       
  28.     // 2.传递数据给上一个控制器(MJContactsViewController)  
  29.     // 2.通知代理  
  30.     if ([self.delegate respondsToSelector:@selector(addViewController:didAddContact:)]) {  
  31.         MJContact *contact = [[MJContact alloc] init];  
  32.         contact.name = self.nameField.text;  
  33.         contact.phone = self.phoneField.text;  
  34.         [self.delegate addViewController:self didAddContact:contact];  
  35.     }  
  36. }  
  37. A文件  
  38. @interface MJContactsViewController () <MJAddViewControllerDelegate>  
  39. /** 
  40.  *  执行跳转之前会调用 
  41.  *  在这个方法中,目标控制器的view还没有被创建 
  42.  */  
  43. - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender  
  44. {  
  45.     id vc = segue.destinationViewController;  
  46.         // 设置下一个控制器(添加联系人的控制器)的代理  
  47.         MJAddViewController *addVc = vc;  
  48.         addVc.delegate = self;  
  49.      
  50. }  
  51. #pragma mark - MJAddViewController的代理方法  
  52. - (void)addViewController:(MJAddViewController *)addVc didAddContact:(MJContact *)contact  
  53. {  
  54.     // 1.添加模型数据  
  55.     [self.contacts addObject:contact];  
  56.       
  57.     // 2.刷新表格  
  58.     [self.tableView reloadData];  
  59. }  
iOS 开发中,页面之间的跳转数据传递通常使用以下方法: 1. 使用故事板(Storyboard):通过故事板可以直观地管理应用的界面和页面之间的跳转关系。在故事板中,你可以创建视图控制器(View Controller)之间的连线,以定义页面之间的跳转关系。你可以使用 Interface Builder 设置跳转传递数据。 2. 使用编程方式:如果你不使用故事板,也可以使用编程方式进行页面跳转。在源代码中,你可以创建新的视图控制器实例,并使用导航控制器(Navigation Controller)或模态弹出(Modal Presentation)等方式进行页面跳转。同样地,你可以通过代码设置传递数据。 3. 数据传递:在页面之间传递数据,最常见的方法是使用属性(Property)或参数(Parameter)。你可以在目标视图控制器中定义公开的属性或参数,然后在源视图控制器中设置其值。当目标视图控制器加载时,就可以获取传递过来的数据。 4. 代理模式:如果需要在页面之间进行双向数据传递或回调操作,可以使用代理模式。通过定义代理协议(Delegate Protocol)和代理对象(Delegate Object),源视图控制器可以将自己设置为目标视图控制器的代理,并实现相应的代理方法来处理数据传递或回调操作。 这些是常见的 iOS 页面跳转数据传递的方法,具体使用哪种方法取决于你的应用需求和开发方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值