- 第一个界面的代码
// XMGContactVC_2.h
#import <UIKit/UIKit.h>
@class XMGContactItem;
@interface XMGContactVC_2 : UITableViewController
/** 用户名*/
@property (nonatomic ,strong) NSString *accountName;
/** 联系人模型*/
@property (nonatomic ,strong) XMGContactItem *contactItem;
@end
// XMGContactVC_2.m -- 只给了部分代码
#import "XMGContactVC-2.h"
#import "XMGAddVC-3.h"
#import "XMGContactItem.h"
#import "XMGEditVC-4.h"
@interface XMGContactVC_2 ()<UIActionSheetDelegate,XMGAddVCDelegate>
/** 存放传递的ContactItem模型*/
@property (nonatomic ,strong) NSMutableArray *dataArray;
@end
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
//获取目标控制器
if ([segue.destinationViewController isKindOfClass:[XMGAddVC_3 class]]) {
XMGAddVC_3 *addVC= (XMGAddVC_3 *)segue.destinationViewController;
//addVC.contactVC = self;
//设置代理
addVC.delegate = self;
}else {
XMGEditVC_4 *eidtVC= (XMGEditVC_4 *)segue.destinationViewController;
//取出当前选中的行模型
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
XMGContactItem *item = self.dataArray[indexPath.row];
//eidtVC.view.backgroundColor = [UIColor redColor];
//把当前选中的行模型传递给下一个控制器
eidtVC.contactItem = item;
}
}
@end
把当前选中的行模型传递给下一个控制器eidtVC.contactItem = item;
- 第二个界面
// XMGEditVC_4.h
#import <UIKit/UIKit.h>
@class XMGContactItem;
@interface XMGEditVC_4 : UIViewController
/** 当前选中的行模型*/
@property (nonatomic ,strong) XMGContactItem *contactItem;
@end
// XMGEditVC_4.m
#import "XMGEditVC-4.h"
#import "XMGContactItem.h"
@interface XMGEditVC_4 ()
@property (weak, nonatomic) IBOutlet UITextField *nameTextF;
@property (weak, nonatomic) IBOutlet UITextField *phoneTextF;
@end
@implementation XMGEditVC_4
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
// NSLog(@"self.contactItem.name===%@",self.contactItem.name);
// 第二种方式给两个文本框赋值
// self.nameTextF.text = self.contactItem.name;
// self.phoneTextF.text = self.contactItem.phone;
}
// 第一种方式给两个文本框赋值
- (void)setContactItem:(XMGContactItem *)contactItem {
_contactItem = contactItem;
self.nameTextF.text = self.contactItem.name;
self.phoneTextF.text = self.contactItem.phone;
}
- 首先开发中可能一些人给两个文本框属性赋值会直接放在set方法里面重写给模型属性赋值的setContactItem方法,但是是错误的,为什么,因为此时的文本框并没有创建出来,此时打印self.nameTextF的值为nil,那么肯定不行而这个问题之所以会出现的原因可能是对控制器的view的加载方式其实是懒加载理解的还不透彻,所以要给两个文本框赋值,就应该在view加载完毕之后去赋值,切记切记
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
// NSLog(@"self.contactItem.name===%@",self.contactItem.name);
self.nameTextF.text = self.contactItem.name;
self.phoneTextF.text = self.contactItem.phone;
}
//- (void)setContactItem:(XMGContactItem *)contactItem {
// _contactItem = contactItem;
//
// self.nameTextF.text = self.contactItem.name;
// self.phoneTextF.text = self.contactItem.phone;
//}
- 代码下载地址:
https://github.com/zhangli940210/LZ-