前几次零零散散的讲了一些ios的基础知识。本次,串起来。来全新建一个搜索的app。
一,新建一个simple application 工程。iphone的。
二,main.storyboard中,新建navigationg。 editor-》embed in-》navigation。
再添加2个 view controller。分别是 搜索结果页 和 第三页,展示页面。 这样首页就是搜索第一页,第二页是 搜索结果页面,第三页,是用户点击搜索结果后的展示页面。
三,把所需要的图片导入到 support files中,注意是copy模式的。再来一个text,拖到第一页上。
四,给text 加上active。连接到view controller.m的函数text search中。打开双页面,添加active。类型是:did end on exit动作。这就是,在输入框中按下回车之后,触发的事件。
- (IBAction)textsearchbutton:(id)sender
{
NSString *name =self.textsearch.text;
NSLog(@"%@", name);
selfsearch:name];
}
其中search是自定义的函数。
- (void) search:(NSString
{
// 设置我们之后解析XML时用的关键字,与响应报文中Body标签之间的getMobileCodeInfoResult标签对应
matchingElement =@"entries";
//创建SOAP消息,内容格式就是网站上提示的请求报文的实体主体部分
NSString *soapMsg = [NSStringstringWithFormat:
@"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"http://webservice.kbhn/\">"
"<soapenv:Header/>"
"<soapenv:Body>"
"<web:getresultbyname2>"
"<!--Optional:-->"
"<name>%@</name>"
"<!--Optional:-->"
"<pageNumber>1</pageNumber>"
"</web:getresultbyname2>"
"</soapenv:Body>"
"</soapenv:Envelope>", name,@""];
// 将这个XML字符串打印出来
NSLog(@"%@", soapMsg);
//创建URL,内容是前面的请求报文报文中第二行主机地址加上第一行URL字段
NSURL *url = [NSURLURLWithString:@"http://xxxx/webservice/query"];
//根据上面的URL创建一个请求
NSMutableURLRequest *req = [NSMutableURLRequestrequestWithURL:url];
NSString *msgLength = [NSStringstringWithFormat:@"%lu", (unsignedlong)[soapMsglength]];
//添加请求的详细信息,与请求报文前半部分的各字段对应
[req addValue:@"text/xml;charset=UTF-8"forHTTPHeaderField:@"Content-Type"];
[req addValue:msgLengthforHTTPHeaderField:@"Content-Length"];
//设置请求行方法为POST,与请求报文第一行对应
[req setHTTPMethod:@"POST"];
// 将SOAP消息加到请求中
[req setHTTPBody: [soapMsgdataUsingEncoding:NSUTF8StringEncoding]];
// 创建连接
conn = [[NSURLConnectionalloc]initWithRequest:reqdelegate:self];
if (conn) {
webData = [NSMutableDatadata];
}
}
第一行 - 代表这是只能类的对象才能使用的函数,相当于非静态函数。也有+,表示类函数,既C++中的静态函数,不用类成员既可以调用。
然后是函数返回值,函数名称,:之后是函数的参数类型 和参数名称。
这里使用了,
, NSURLConnectionDelegate 进行发送和xml的解析。
五,在3个view controller中,添加segue。添加方法是:在
中,选择 黄色的 view controller 右键拖动到 另一个黄色的 view controller中。选择 customs 类型。就建立了 controller之间的 segue了。给他们分别命名。
新建2个 controll类。关联到这2个view上。
关联。
到class 黄色的view 连接到类 就行了。
六,开始做第三页。
把各种label image 控件都放到view中。在拖动到关联关系中。
第三页如图所示。
完成之后,加赋值函数:
// 文档结束
-(void)parserDidEndDocument:(NSXMLParser
{
// 开始给页面复植
[namesetNumberOfLines:0];
[namesizeToFit];
name.font = [UIFontsystemFontOfSize:12];
name.text = [dictionaryobjectForKey:@"name"];
[countrysetNumberOfLines:0];
[countrysizeToFit];
country.font = [UIFontsystemFontOfSize:8];
country.text = [dictionaryobjectForKey:@"country"];
[specialitysetNumberOfLines:0];
[speciality sizeToFit];
speciality.font = [UIFontsystemFontOfSize:8];
speciality.text = [dictionaryobjectForKey:@"speciality"];
[telsetNumberOfLines:0];
[telsizeToFit];
tel.font = [UIFontsystemFontOfSize:8];
tel.text = [dictionaryobjectForKey:@"tel"];
[organizationsetNumberOfLines:0];
[organization sizeToFit];
organization.font = [UIFontsystemFontOfSize:8];
organization.text = [dictionaryobjectForKey:@"organization"];
NSURL *url = [NSURLURLWithString: [@"http://xxxxx"stringByAppendingString: [dictionaryobjectForKey:@"headpic"]]];
UIImage *image = [UIImageimageWithData: [NSDatadataWithContentsOfURL:url]];
headpicinitWithImage:image];
[emailsetNumberOfLines:0];
[emailsizeToFit];
email.font = [UIFontsystemFontOfSize:8];
email.text = [dictionaryobjectForKey:@"email"];
[degreesetNumberOfLines:0];
[degreesizeToFit];
degree.font = [UIFontsystemFontOfSize:8];
degree.text = [dictionaryobjectForKey:@"degree"];
[abstract1setNumberOfLines:10];
[abstract1 sizeToFit];
abstract1.font = [UIFontsystemFontOfSize:8];
abstract1.text = [dictionaryobjectForKey:@"abstract1"];
[docpdfpagesetNumberOfLines:0];
[docpdfpage sizeToFit];
docpdfpage.font = [UIFontsystemFontOfSize:8];
docpdfpage.text = [dictionaryobjectForKey:@"docpdfpage"];
[relativepeoplesetNumberOfLines:0];
[relativepeoplesizeToFit];
relativepeople.font = [UIFontsystemFontOfSize:8];
relativepeople.text = [dictionaryobjectForKey:@"relativepeople"];
NSURL *url2 = [NSURLURLWithString: [@"http://xxxx/thumbimg/"stringByAppendingString: [dictionaryobjectForKey:@"thumb"]]];
UIImage *image2 = [UIImageimageWithData: [NSDatadataWithContentsOfURL:url2]];
thumbinitWithImage:image2];
[self.urlsetNumberOfLines:0];
self.urlsizeToFit];
self.url.font = [UIFont systemFontOfSize:8];
self.url.text = [dictionaryobjectForKey:@"url"];
}
最后增加一些,特殊字符的过滤函数就行了。
iOS app的发布和真机调试,我下篇再讲。