iOS之 搜索app的实现

前几次零零散散的讲了一些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 *)name

{

    // 设置我们之后解析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++中的静态函数,不用类成员既可以调用。

然后是函数返回值,函数名称,:之后是函数的参数类型 和参数名称。

这里使用了,

NSXMLParserDelegateNSURLConnectionDelegate 进行发送和xml的解析。


五,在3个view controller中,添加segue。添加方法是:在


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

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



关联。

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

六,开始做第三页。

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


第三页如图所示。


完成之后,加赋值函数:


// 文档结束

-(void)parserDidEndDocument:(NSXMLParser *)parser

{

    // 开始给页面复植

    [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的发布和真机调试,我下篇再讲。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值