IOS顺传还是比较简单的总的来说就是获取目标控制器给目标控制器赋值如下Segue连线传值:
发送方
//通过标识符执行跳转()
[self performSegueWithIdentifier:@"loginToContact" sender:nil];
/**
* 执行跳转之前回调用, 进行一些传值操作
*/
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
//拿到目标控制器赋值给接收的字段
GContactViewController *showView = segue.destinationViewController;
showView.account = _accountField.text;
}
接收方
/**
* 接收传值
*
*/
- (void)setAccount:(NSString *)account {
_account = account;
self.navigationItem.title = [NSString stringWithFormat:@"%@的通讯录", _account];
}
IOS逆传相对而言麻烦一点最起码相对Android逆传麻烦一点IOS逆传一般通过代理实现逆传
首先定义一个代理及方法,方法具体代码执行由遵守这个协议的类实现
//
// GAddContactViewController.h
// 通讯录
//
// Created by gaocai on 16/7/21.
// Copyright © 2016年 gaocai. All rights reserved.
//
#import <UIKit/UIKit.h>
@class GAddContactViewController, GContact;
@protocol GAddContactViewControllerDelegate <NSObject>
/**
* 代理方法
*/
@optional
- (void)addViewController:(GAddContactViewController *)addVc didAddContact:(GContact *)contact;
@end
@interface GAddContactViewController : UIViewController
/**
* 代理对象引用
*/
@property (nonatomic, weak) id<GAddContactViewControllerDelegate> delegate;
@end
其次触发逆传事件
/**
* 触发逆传事件
*
*/
- (IBAction)addBtn:(id)sender {
//将数据封装成联系人模型
GContact *c = [GContact contactName:_nameField.text phone:_phoneField.text];
//如果实现代理方法则执行
if ([_delegate respondsToSelector:@selector(addViewController:didAddContact:)]) {
//执行代理方法
[_delegate addViewController:self didAddContact:c];
}
[self.navigationController popViewControllerAnimated:YES];
}
最后逆传接收方首先要遵守协议实现其方法
/**
* 执行跳转前会执行这里已经拿到目标控制器
*
* @param segue segue description
* @param sender sender description
*/
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
GAddContactViewController *addContact = segue.destinationViewController;
addContact.delegate = self;
}
#pragma mark - GAddContactViewControllerDelegate代理方法
- (void)addViewController:(GAddContactViewController *)addVc didAddContact:(GContact *)contact {
_contact = contact;
NSLog(@"%@", _contact.name);
}