通讯录之顺传和逆传

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);
}

Demo下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值