iOS Developerruntime运行时学习

iOS_在UITableViewCell按钮点击处理中使用Run

2016-12-07  本文已影响63人  旅橙

1.头文件以及静态字符串

  #import <objc/runtime.h>

  static const  NSString *lala;

2.在CellforRow(TableView代理方法)中使用

  -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  {
  //根据指定的下标从数组取出要用的Model
  NSArray *dayArr = _totalDataArray[chosedWeekNum];
  LDJSchoolCarCheckModel  *model = dayArr[indexPath.section];
  LDJSchoolCarBabyModel *babyModel = model.content[indexPath.row];
    ...
    objc_setAssociatedObject(cell.phoneButton, &lala, babyModel, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    objc_setAssociatedObject(cell.upAndDownButton, &lala, babyModel, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
  //上面其实有两个button都做了处理,为了简介下面只展开一个
  [cell.phoneButton addTarget:self action:@selector(callPhoneButtonClick:) forControlEvents:UIControlEventTouchUpInside];
    ...
  }

3.使用

   - (void)callPhoneButtonClick:(UIButton *)btn{
  //取出要用的model
  LDJSchoolCarBabyModel *babyModel = objc_getAssociatedObject(btn, &lala);
  //赋给全局的model,另一个方法可以直接用
  currentModel = babyModel;
  UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:[NSString stringWithFormat:@"呼叫%@?",babyModel.name] delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
  alert.tag = 5000;
  [alert show];
  }
  - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
  {
  if(alertView.tag == 5000 && buttonIndex == 1){
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"tel://%@",currentModel.primary_mobile]]];
    }
  }
上一篇 下一篇

猜你喜欢

热点阅读