美文网首页iOS程序猿iOS Developer
iOS: 开发中遇到的问题及解决方案(持续更新ing)

iOS: 开发中遇到的问题及解决方案(持续更新ing)

作者: 风御轩 | 来源:发表于2016-11-03 13:35 被阅读114次
    数据解析相关
    • 案例一
      由UITextView创建的textView显示后台返回的数据如下图所示:


      购买须知.png

      解决方法:

       //购买须知
      UITextView *vi = [[UITextView alloc]initWithFrame:CGRectMake(10, 44, SCREEN_WIDTH-20, SCREEN_HEIGHT/2)];   
      vi.userInteractionEnabled = NO;    
      vi.scrollEnabled = NO;    
      NSString *htmlStr = _model.product_activity;   
      // 这里不直接由vi.text显示内容,而是通过以下方法转换之后再由vi的attributedText属性显示html格式的内容。     
      NSAttributedString *attributedString = [[NSAttributedString alloc] initWithData:[htmlStr dataUsingEncoding:NSUnicodeStringEncoding] options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType}documentAttributes:nil error:nil];      
      vi.attributedText = attributedString;
      

    之后运行模拟器显示结果如下:

    购买须知最终版.png
    2016年11月6日晚更新

    控制器之间的跳转相关
    • 案例二


      案例二.png

      目前的需求是,点击积分或者团购专区下面的具体的item,然后跳转页面,但是具体跳到哪个页面并不固定。

      比如有时候有活动了,就跳转一个与活动相关的H5页面,有时候又需要跳到某个原生的商品列表页或者具体的商品详情页。

      解决方法:
      通过使用Dariel在杭州造的轮子DCURLRouter来暂时解决需求。具体自然是将轮子引入到项目中,然后配置现成的plist文件。

      plist.png

      之后在首页控制器的跳转方法里添加如下所示的代码


      demo.png

      最后再在跳转的目标控制器内添加相应的方法用来接收参数,如果没有参数就不需要另行配置了。

    示例.png webView.png

    效果如下所示:

    演示.gif

    实际应用中,后端只需要把这个url传给客户端,客户端根据这个url跳就可以了,完全不需要管跳到哪个页面,前提当然是得配置了相关的控制器。

    这样做的好处也是很明显的:
    1.跳转方式灵活,本地进行简单逻辑处理,使用openURL来打开对应的控制器,而这个你想要打开的URL Scheme是可以动态的从服务器获取的。这样就很简单的实现了动态跳转。
    2.传递参数的方式与URL一致,只需要在URL里附加上对应的参数即可。

    当然,这样做并不是非常美观,本来代码里都是通过push或者present进行跳转的,突然穿插进来这样的跳转方式,会让代码变得很乱又很突兀。小范围的使用只能是解决当务之急的问题,如果整个项目都采用这种方式,那么会非常消耗常驻的内存,所以最佳的方案就是对项目进行拆分,然后进行组件化架构,具体可以学习并参考Casa Taloyum大神的iOS应用架构谈系列文章。

    参考资料:
    Dariel在杭州DCURLRouter

    另外再附上相关的学习与参考资料(gitHub上1000+stars的项目):
    routable-ios
    HHRouter
    JLRoutes

    相关文章

      网友评论

        本文标题:iOS: 开发中遇到的问题及解决方案(持续更新ing)

        本文链接:https://www.haomeiwen.com/subject/xvrbuttx.html