iOS开发资料收集iOS学习开发iOS学习笔记

浅谈控制器传值之属性传值与segue传值

2016-06-13  本文已影响462人  上冬十二

导读

我们在进行程序编写时,往往需要在界面控制器跳转时传值.此处抛开block,代理逆传,谈一谈我所遇到的顺传问题,希望对需要的人有用


属性传值

上一级控制器

/**
    此处以tableView的cell点击方法为例,将tableview的模型属性传给下一级控制器
*/
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// 获取模型
OAModel *model = self.modelArrs[indexPath.row];
// 获取目标控制器
OADetailsController *deVc = [[OADetailsController alloc] init];
// 对目标控制器属性进行赋值
deVc.model = model;
// push到目标控制器
[self.navigationController pushViewController:deVc animated:YES];
}

下一级控制器.h

// 接收属性
@property (nonatomic,strong) OAModel *model;

下一级控制器.m

//拿到赋值属性直接使用    
self.navigationItem.title = self.model.title;

segue传值


认识segue

来源控制器中实现

   /**
        此处以tableView的cell点击方法为例,将tableview的模型属性传给下一级控制器,
        Segue从cell拖线至下一级控制器
    */
  - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
  if ([segue.identifier isEqualToString:@"SendValue"]) {
    // 获取目标控制器
    UIViewController *vc = segue.destinationViewController;
    // 获取当前点击cell的索引 sender为当前点击的cell
    NSIndexPath *indexPath = [self.tableView indexPathForCell:sender];
    // 取出模型
    OAModel *model = self.modelArrs[indexPath.row];
    // 进行赋值
    // value:要赋的值
    // key:下一级控制器接收的同名属性
    [vc setValue:model forKey:@"model"];
  }  
}

目标控制器.h实现

  // 属性要和来源控制器key值同名
@property (nonatomic,strong) OAModel *model;

目标控制器.m实现

  // 拿到赋值属性直接使用
self.navigationItem.title = self.model.title;

-希望对大家有所帮助-

上一篇 下一篇

猜你喜欢

热点阅读