7.添加电子名片扩展并搭建个人名片界面

打开这两个头文件

 1. XMPPvCardTempModule.h

 2. XMPPvCardCoreDataStorage.h

在appDelegate.h中定义XMPPvCardCoreDataStorage全局访问的模块属性

在appDelegate.m中定义XMPPvCardCoreDataStorage成员变量用于电子名片的数据存储模块

  XMPPvCardCordDataStorage  *_xmppvCardStorage;

 2.  在XMPPstream中添加电子名片模块

  在重新连接模块下面添加 _xmppvCardStorage = [XMPPvCardCordDataStorage shardeInstance];

  并实例化 _xmppvCardModule = [[XMPPvCardTempModule alloc] initWithvCardStorage:_xmppvCardStorage]

  激活模型 [_xmppvCardModule activate:_xmppStream];

 3.在销毁XMPPStream并注销扩展模块中添加电子名片

  在取消激活后添加 [_xmppvCardModule deactivate];

选中表格设置静态单元格

style:Grouped 是以分组的信息显示

  4.在主storyboard中的.m文件中添加XMPPvCardTemp.h头文件

  添加一个电子名片处理方法

-(void)setupvCard{

1.获取当前帐号的电子名片

  XMPPvCardTemp *myCard = [[[self appDelegate] xmppvCardModule] myvCardTemp];

2.判断当前帐号是否有电子名片

  if (myCard == nil){

 1. // 新建电子名片 导入loginUser.h头文件

  myCard = [XMPPvCardTemp vCardTemp];

  2.设置昵称

  myCard.nickname = [[LoginUser sharedLoginUser] userName];

  }

if (myCard.jid == nil) {

  myCard.jid = [XMPPJID jidWithString:[LoginUser sharedLoginUser].myJIDName];  }

  //保存电子名片

  [[self appDelegate] xmppvCardModule] updateMyvCardTemp:myCard];

  //使用myCard中的信息显示到界面  将界面拖的属性拖到.m文件中设置属性连接线{headImageView;nickNameText;jidText;orgNameText;orgUnitText;titleText;photoNumberText;emailText}

  //照片

  if(myCard.photo){_headImageView.image = [UIImage imageWithData:myCard.photo];

  //用户名

  _nickNameText.text = myCard.nickname;

  //JID

  _jidText.text = [myCard.jid full];

  //公司名称

  _orgNameText.text = myCard.orgName;

  //部门

  if(myCard.orgUnits){_orgUnitText.text = myCard.orgUnits[0];}

  //职务

  _titleText.text = myCard.title;

  //电话

  _photoNumberText.text = myCard.note;

  //电子邮件

  _emailText.text = myCard.mailer;

}在加载viewDidLoad时就开始调用这个方法

//新建一个view controller  拖入一个text 选中表格push view controller  选中连接线设置ldentifier名称、、EditVCardSegue

//选中标题 back button 设置返回 

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

  //中窗口属性中设置需要跳转表格的tag为1.

  //1.取出用户点击的cell

  UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

  //2.判断cell.tag,如果是1,跳转

  if (cell.tag ==1){

  [self performSegueWithIdentifier:@"EditVCardSegue" sender:indexPath];

}

}//这个方法完了之后会调用 -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(NSIndexPath *)indexPath{

  //新建一个继承UIViewController的类 名:EditVCardViewController 将view controller的class指向这个类

  //

  EditVCardViewController *controller = segue.destinationViewController;

  //设置标题属性 变定一个成员变量数组_titleArray

    //在viewDidLoad中实例化标题数组   _titleArray = @[@[@“头像”,@“”,@“”],@[@“”,@"",@""]];

    //在EditVCardViewController头文件中定义一个标题属性contentTitle和内容属性contentLable

1.设置标题

  controller.contentTitle = _titlesArray[indexPath.section][indexPath.row];

  //在EditVCardViewController的viewDidLoad中设置标题 self.title = _contentTitle;  

  

2.传递内容

  同样的方法设置内容。

//在EditVCardViewController头文件中定义一个内容属性contentLable

//设置内容属性 变定一个成员变量数组_titleLablesArray

//在EditVCardViewController的viewDidLoad中设置内容连接内容Lable  名:contenText  _contentText.text = _contentLable.text;

//在viewDidLoad中实例化内容数组_titleLablesArray = @[@[_jidText,_nickNameText,],@[,,]];

controller.contentLable = _titleLablesArray[indexPath.section][indexPath.row];

}

//设置保存  连线{  

_contentLable.text = _contentText.text;

[self.navigationController popViewControllerAnimated:YES];

}

//更新电子名片

-(void)savevCard{

// 1.获取电子名片

XMPPvCardTemp *myCard =[[[self appDelegate]xmppvCardModule]myvCardTemp];

//设置名片内容

myCard.photo = UIImagePNGRepresentation(_headImageView.image);

// 截断前后字符串. 导入NSString+Helper.h头文件

myCard.nickname = [_nickNameText.text trimString];

myCard.orgName = [_orgNameText.text trimString];

myCard.orgUnits = @[[_orgUnitText.text trimString]];

myCard.title = [_titleText.text trimString];

myCard.note = [_photoNumberText.text trimString];

myCard.mailer = [_emailText.text trimString];

//保存电子名片

[[[self appDelegate] xmppvCardModule] updateMyvCardTemp:myCard];

}

在EditVCardViewController.h中设置代理

@class EditVCardViewController;

@protocol EditVCardViewControllerDelegate <NSObject>

-(void)editVCardViewControllerDidFinished;

@end

@property (strong, nonatomic) id<EditVCardViewControllerDelegate>delegate;

//设置保存  连线{  添加NSString+Helper.h头文件 截断字符

_contentLable.text = [_contentText.text trimString];

[_delegate editVCardViewControllerDidFinished];

[self.navigationController popViewControllerAnimated:YES];

}

//在传递内容 后面设置代理  controller.delegate = self;

//在主窗口文件中遵守协议Edit<VCardViewControllerDelegate>

-(void)editVCardViewControllerDidFinished{

  [self savevVard];

}

//设置默认头像

selection 属性设置成可显示箭头

//设置修改完成后跳转到前一个页面。

//设置输入框的代理 ,将代理拖到主窗口中 遵守<UITextFieldDlegate>

文件框代理

-(BOOL)textFieldShouldReturn:(UITextField *)textField{

  [self save:nil];

  return YES;

}

时间: 2024-10-30 21:38:11

7.添加电子名片扩展并搭建个人名片界面的相关文章

PHP添加Mssql/sqlserver2000扩展,适用于Php5.2/Php5.3/Php5.4

原文:PHP添加Mssql/sqlserver2000扩展,适用于Php5.2/Php5.3/Php5.4 本文介绍如何在Windows下配置php扩展. 本文链接 http://blog.csdn.net/uuleaf/article/details/7663424 ,转载请注意来源 环境配置: 1. 如果你使用sqlserver2000数据库,请务必打上sqlserver2000 sp4补丁,否则会无法连接sqlserver2000数据库 您可以在http://www.microsoft.c

给PDF文档添加电子图章的方法

在这电子商务遍地走的社会,电子图章被越来越多地应用在合同.发票和其它电子文档中.那么如果不会使用PS,该如何实现在文档中添加电子图章呢?今天就给各位老铁一种给PDF文档添加电子图章的方法. 工具:PDF编辑器中文版 第一步:先将我们需要加图章的文件转换为PDF格式 点击顶部菜单栏"转换"--"文件转换"--"将文件转换为PDF": 通过PDF编辑器将我们需要打电子图章的文件转换为PDF格式. 第二步:用PDF编辑器打开文档,点击顶部菜单栏&quo

为原始表添加或修改扩展表Extends table

疫情期间也发个帖子,证明我们依旧小强. 免责声明: 如果你创建了一个新表后发现没有扩展自某表,建议删除重建,删除重建需要分别使用两个update set保存,否则更新到UAT或者PROD环境看不到,后果请自负. 使用代码添加或修改扩展表是不被Servicenow公司赞同的,如果你的表在创建后已经有很多功能了,担心数据问题,建议还是找SN公司,提一个ticket就能解决.如果直接使用本代码,造成数据不匹配等等问题,后果自负(SN也是这么说的哈). 首先声明这种做法可以为原始表添加或修改扩展表Ext

chrome无法从该网站添加应用、扩展程序和用户脚本的有效解决方法!

1.情景展示 在安装chrome离线扩展程序时,报错信息如下:无法从该网站添加应用.扩展程序和用户脚本(Apps, extensions, and user scripts cannot be added from this website). 2.解决方案 第一步:新建一个标签页,在地址栏输入:chrome://flags/#extensions-on-chrome-urls并按回车键 将值改为Enabled 重启chrome 第二步:启用开发者模式 刷新该页面 再次添加扩展程序就可以了. 3

一分钟搭建个人详情界面

http://www.cocoachina.com/ios/20150819/13060.html 作者:吖了个峥 授权本站转载. 前言 前段时间有网友说我个人详情页功能不是很完善,头部视图和选项卡视图不能拖动,今天利用一点时间封装了一套个人详情控制器,并且解决了上次的问题.封装的这套个人详情控制器,用法非常简单,跟UITabBarController用法一样,一分钟内基本就能搭建完一个个人详情页了. 效果如图: 功能难点 按照正常的逻辑 ,往按钮上拖,会触发按钮,达到高亮. 解决技术:需要非常

Scrapy腾讯分分cai搭建彩中添加定时执行任务的扩展

最近腾讯分分cai搭建彩 dsluntan.com VX:17061863513利用scrapy + redis搭建分布式爬虫系统,有这样一个要求: 定时性的针对某一url进行抓取. 当然方法有很多,比如说写个脚本定时性的向redis中放入url,但最后选择在scrapy中写个扩展来实现,这样耦合性更强,也更方便. 用过scrapy的人都知道scrapy在爬取过程中会间接性的展示爬取的item及request数目,这一功能是通过scrapy内置的扩展logstats来完成的.因此我们不妨看下源码

如何利用phpize在生产环境中为php添加新的扩展php-bcmath

在日常的开发当中,随着开发的功能越来越复杂.对运行环境的要求也就随着需求的变化需要不断地更新和变化.一个在线的生产系统不可能一开始就满足了所有的运行依赖,因此动态地添加依赖就显得比较必要了.如果你的应用是基于lanmp的话,那么很有可能某天需要添加一个apache的扩展或者php的扩展.此次记录一下如何添加一个php的扩展.由于需要接入银联的接口,而查看了下运行环境,发现缺少了高精度运算的扩展php-bcmath. 程序运行的时候报如下异常 php-bcmath[Fatal error: Cal

给jquery对象添加自定义方法和扩展jquery类

http://blog.sina.com.cn/s/blog_944b24ef0101epr5.html 一.给jQuery对象添加自定义方法   方法一.$.fn.xxx 方法二.jQuery.fn.extend({ xxx:function(){ alert($(this).val()); } });       方法一示例: $.fn.setCursorPosition = function(position){            if(this.lengh == 0) return

给 string 添加一个 GetInputStream 扩展方法

有时候,我们须要读取一些数据,而无论这数据来源于磁盘上的数据文件,还是来源于网络上的数据.于是.就有了以下的 StringExtensions.cs: 1 using System; 2 using System.IO; 3 using System.Net; 4 5 namespace Skyiv 6 { 7 public static class StringExtensions 8 { 9 public static Stream GetInputStream(this string fi