原文地址http://blog.csdn.net/kangx6/article/details/7744304
服务器搭建http://blog.csdn.net/leewolf130/article/details/21240987
相关文章1http://blog.csdn.net/leewolf130/article/details/21180853
相关文章2http://blog.csdn.net/leewolf130/article/details/21180909
先看一下我们完成的效果图
首先下载xmppframework这个框架,下载
点ZIP下载
接下来,用Xcode中新建一个工程
将以下这些文件拖入新建工程中
加入?框架
并设置
到这里我们就全部设好了,跑一下试试,看有没有错呢
如果没有错的话,我们的xmppframework就加入成功了。
我们设置我们的页面如下图:
我们的KKViewController.h
- #进口 <UIKit/UIKit.h>
- @接口 KKViewController:的UIViewController <UITableViewDelegate, UITableViewDataSource>
- @财产 (强,非原子)IBOutlet的UITableView * tView;
- - (IBAction)帐号:(ID)发送方;
- @结束
KKViewController.m
- #导入 “KKViewController.h”
- @接口 KKViewController(){
- / /在线用户
- 的NSMutableArray * onlineUsers;
- }
- @结束
- @实施 KKViewController
- @合成 tView;
- - (无效)viewDidLoad中
- {
- [超级 viewDidLoad中];
- self.tView.delegate =自我;
- self.tView.dataSource =自我;
- onlineUsers = [NSMutableArray里数组];
- / /在载入视图,通常从笔尖后的任何额外的设置。
- }
- - (无效)viewDidUnload
- {
- [自我setTView:无];
- [超级 viewDidUnload];
- / /释放任何保留主视图的子视图。
- }
- - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
- {
- 返回 (interfaceOrientation = UIInterfaceOrientationPortraitUpsideDown!);
- }
- - (IBAction)帐号:(ID)发送方{
- }
- 的#pragma标志UITableViewDataSource
- - (NSInteger的)的tableView:(UITableView中*)实现代码如下numberOfRowsInSection:(NSInteger的)部分{
- 返回 [onlineUsers算];
- }
- - (的UITableViewCell *)的tableView:(UITableView的*)的tableView的cellForRowAtIndexPath:(NSIndexPath *)indexPath {
- 静态 的NSString *标识符= @ “userCell”;
- 的UITableViewCell *电池= [实现代码如下dequeueReusableCellWithIdentifier:标识符];
- 如果 (细胞==无){
- 电池= [[的UITableViewCell的alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:标识符];
- }
- 返回 单元格;
- }
- - (NSInteger的)numberOfSectionsInTableView:(UITableView中*)实现代码如下{
- 返回 1;
- }
- 的#pragma标志UITableViewDelegate
- - (无效)的tableView:(UITableView的*)的tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
- }
- @结束
接下来是登录的页面
KKLoginController.m
- - (IBAction)LoginButton:(id)的发送者{
- 如果 ([个体经营validateWithUser:userTextField.text andPass:passTextField.text andServer:serverTextField.text]){
- NSUserDefaults *默认值= [NSUserDefaults standardUserDefaults];
- [默认值的setObject:self.userTextField.text forKey:USERID];
- [默认值的setObject:self.passTextField.text forKey:PASS];
- [默认值的setObject:self.serverTextField.text forKey:SERVER];
- / /保存
- [默认同步];
- [自我dismissModalViewControllerAnimated:YES];
- }否则 {
- UIAlertView *警报= [[UIAlertView的alloc] initWithTitle:@“提示” 的消息:@“请输入用户名,密码和服务器” 委托:无cancelButtonTitle:@“确定” otherButtonTitles:无,无];
- [警示秀];
- }
- }
- - (IBAction)closeButton:(id)的发送者{
- [自我dismissModalViewControllerAnimated:YES];
- }
- - (BOOL)validateWithUser:(的NSString *)userText andPass:(的NSString *)passText andServer:(的NSString *)serverText {
- 如果 (userText.length> 0 && passText.length> 0 && serverText.length> 0){
- 返回 YES;
- }
- 返回 NO;
- }
这里着重的还是的UITableView
KKChatController.m
- - (NSInteger的)numberOfSectionsInTableView:(UITableView中*)实现代码如下{
- 返回 1;
- }
- - (NSInteger的)的tableView:(UITableView中*)实现代码如下numberOfRowsInSection:(NSInteger的)部分{
- 返回 [邮件计数];
- }
- - (的UITableViewCell *)的tableView:(UITableView的*)的tableView的cellForRowAtIndexPath:(NSIndexPath *)indexPath {
- 静态 的NSString *标识符= @ “msgCell”;
- 的UITableViewCell *电池= [实现代码如下dequeueReusableCellWithIdentifier:标识符];
- 如果 (细胞==无){
- 电池= [[的UITableViewCell的alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:标识符];
- }
- 的NSMutableDictionary *快译通= [讯息objectAtIndex:indexPath.row];
- cell.textLabel.text = [快译通objectForKey:@“味精”];
- cell.detailTextLabel.text = [快译通objectForKey:@“寄件人”];
- cell.accessoryType = UITableViewCellAccessoryNone;
- 返回 单元格;
- }
把这些都设置好以后,我们就要着重介绍XMPP了,怕太长了,接下一章吧。