IOS开发之——私人通讯录-控制器间传值(3)

一 概述

本节完成通讯录到成员添加页面,成员添加页面填写完姓名和电话号码后保存并返回到通讯录界面:

  • prepareForSegue:设置联系人控制器上的标题
  • 顺传:控制器之间的传值,需要把登录的账号传给联系人控制器
  • 逆传:控制器之间的传值,把添加用户信息传递给联系人控制器

二 效果图

三 功能实现

3.1 prepareForSegue(Login->Contact)

  • 利用performSegueWithIdentifier:方法可以执行某个Segue,完成界面跳转

3.2 顺传(Login->Contact)

1
2
3
4
5
6
7
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSLog(@"%@---%@--%@",segue.identifier,segue.sourceViewController,segue.destinationViewController);

UIViewController *v=segue.destinationViewController;
v.navigationItem.title=[NSString stringWithFormat:@"%@的联系人",_accountField.text];
}

3.3 逆传(Add->Contact)

AddController

1
2
3
4
5
6
7
8
9
10
11
12
13
14
- (IBAction)add:(id)sender
{
//回到上一个控制器
[self.navigationController popViewControllerAnimated:YES];
//创建模型
Contact *contact=[Contact contactWithName:_nameField.text phone:_phoneField.text];
//2.把文本框的内容传递给联系人控制器
//[self.contacts setName:_nameField.text phone:_phoneField.text];
//2.通知代理做事情
if ([_delegate respondsToSelector:@selector(viewController:didAddContact:)]) {
[_delegate viewController:self didAddContact:contact];
}

}

ContactController

1
2
3
4
5
6
7
8
9
10
- (void)viewController:(AddViewController *)add didAddContact:(Contact *)contact
{
//把数据展示到联系人界面上
NSLog(@"%@",contact.name);
//保存
[self.contacts addObject:contact];
//刷新
[self.tableView reloadData];

}