UI_页面传值问题

属性传值

    // 属性传值:最常用的一种传值方式
    /**
     *  操作过程 
     *  1、在第二个控制器的.h文件里面书写属性
     *  2、就在第一个页面创建第二个页面控制器方法里面,进行赋值操作
     *  3、适用性(局限性):仅仅适用于从第一个页面传到第二个页面(从前往后传)
     */

*1、在第二个控制器的.h文件里面书写属性

//  设置属性用于传值
@property (nonatomic, copy)NSString *receiveStr;

*2、就在第一个页面创建第二个页面控制器方法里面,进行赋值操作

    // 赋值, 属性写在了第二个控制器里面
    // 在 SecondViewController.m 里面接收,因为切换的是控制器
    secondVC.receiveStr = self.rootView.firstText.text;
// 接收字符串
    self.rootView.label.text = self.receiveStr;

代理传值

    // 代理传值:
    /**
     *  操作过程
     *  1、在第二级控制器的.h文件,书写非正式协议(方法必须带参数)
     *  2、在第二级控制器的.h文件,写属性
     *  3、在第二级控制器的.m文件,利用代理属性,去调用协议里面的方法(同时把参数传出去)
     *
     *  4、在第一级控制器里面遵守协议
     *  5、在第一级控制器里面设置代理
     *  6、在第一级控制器里面实现代理方法
     */
 1、在第二级控制器的.h文件,书写非正式协议(方法必须带参数)
// 1.设置协议
@protocol SecondViewControllerDelegate <NSObject>

- (void)translateValueFromSecondToFirst:(NSString *)string;

@end
 2、在第二级控制器的.h文件,写属性
//  设置属性用于传值
@property (nonatomic, copy)NSString *receiveStr;
 3、在第二级控制器的.m文件,利用代理属性,去调用协议里面的方法(同时把参数传出去)
    // 3.自己创建返回按钮,下面实现方法
    UIBarButtonItem *left = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(leftDidClicked:)];
    self.navigationItem.leftBarButtonItem = left;
    [left release];
}


#pragma mark - 实现点击方法
- (void)leftDidClicked:(UIBarButtonItem *)sender
{
    if (self.delegate && [self.delegate respondsToSelector:@selector(translateValueFromSecondToFirst:)]) {
        // 代理去执行方法
        [self.delegate translateValueFromSecondToFirst:@"李莫愁"];
    }

    [self.navigationController popViewControllerAnimated:YES];
}
 4、在第一级控制器里面遵守协议
// 4.遵守协议
@interface RootViewController ()<SecondViewControllerDelegate>
 5、在第一级控制器里面设置代理
    // 5. 设置代理方法
    secondVC.delegate = self;
 6、在第一级控制器里面实现代理方法
// 6.实现代理方法
#pragma mark - 实现代理方法
- (void)translateValueFromSecondToFirst:(NSString *)string
{
    NSLog(@"%@",string);
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值