前几次零零散散的讲了一些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。添加方法是:在

ios7搜索 iphone搜索界面_ios7搜索

中,选择 黄色的 view controller 右键拖动到 另一个黄色的 view controller中。选择 customs 类型。就建立了 controller之间的 segue了。给他们分别命名。

新建2个 controll类。关联到这2个view上。

ios7搜索 iphone搜索界面_iOS_02


关联。

ios7搜索 iphone搜索界面_iOS_03

到class 黄色的view 连接到类 就行了。

六,开始做第三页。

把各种label image 控件都放到view中。在拖动到关联关系中。

ios7搜索 iphone搜索界面_iOS_04

第三页如图所示。


完成之后,加赋值函数:


// 文档结束
-(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的发布和真机调试,我下篇再讲。