美文网首页
iOS MVC简单使用

iOS MVC简单使用

作者: 雪波 | 来源:发表于2015-05-28 20:09 被阅读155次

创建数据模型

  • 现在一个基础shop对象需要这两个信息
/** 图片名 */
@property (strong, nonatomic) NSString *icon;

/** 商品名 */
@property (strong, nonatomic) NSString *name;
  • 首先将字典内容转化为模型
- (instancetype)initWithDict:(NSDictionary *)dict{

    if (self = [super init]) {
        self.icon = dict[@"icon"];
        self.name = dict[@"name"];
    }
    return self;
}
  • 然后在读取plist文件时调用转换方法
/** 懒加载shops内容 */
- (NSArray *)shops{
    if (_shops == nil){
        NSString *file = [[NSBundle mainBundle] pathForResource:@"shops" ofType:@"plist"];
        NSArray *dictArray = [NSArray arrayWithContentsOfFile:file];
        NSMutableArray *shopsArray = [NSMutableArray array];
        for (NSDictionary *dict in dictArray){
            XBShop *shop = [XBShop shopWithDict:dict];
            [shopsArray addObject:shop];
        }
        _shops = shopsArray;
    }
    return _shops;
}

自定义控件

  • shopView 控件由三块组成

    • UIView
      • UIImageView
      • UIlabel
  • shopView 有自己的shop信息

/** 商品模型 */
@property (strong, nonatomic) XBShop *shop;
  • 内部有封装好的两个子控件
@interface XBShopView ()

@property(strong, nonatomic)UIImageView *shopIcon;
@property(strong, nonatomic)UILabel *nameLabel;

@end
  • 加载shop信息的同时,设置两个子控件的内容
- (void)setShop:(XBShop *)shop{
    _shop = shop;
    self.shopIcon.image = [UIImage imageNamed:shop.icon];
    self.nameLabel.text = shop.name;
}
  • 同时重写两个子控件的getter。懒加载进行默认设置,设置内容如下。

    • 背景色
    • 字体
    • 对齐方式
    • 加载到父控件
  • 当自定义控件frame变化同时,修改其子控件frame。

    • 重写 -(void)layoutSubViews 方法.
    • 当控件frame变化是,会自动调用 -(void)layoutSubViews 方法.

- 添加新控件

  • 拿到数据模型
  • 传入自定义控件
  • 用自定义控件内部封装的方法进行设置
  • 计算并设置控件坐标

HUD##

  • HUD是一段忽然出现的提示信息
    • 提醒用户
    • 一段时间后会自动消失
    • 一般用UILbael控件
    self.hud.alpha = 1.0;   // 设置透明度为1.0可见
    self.hud.text = text;   // 设置文本内容

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        self.hud.alpha = 0.0;   // 1.5s 后设置透明度为0.0消失
    });

定时任务

  • 方法1:performSelector
// 1.5s后自动调用self的hideHUD方法
[self performSelector:@selector(hideHUD) withObject:nil afterDelay:1.5];
  • 方法2:GCD
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    // 1.5s后自动执行这个block里面的代码
    self.hud.alpha = 0.0;
});
  • 方法3:NSTimer
// 1.5s后自动调用self的hideHUD方法
[NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(hideHUD) userInfo:nil repeats:NO];
// repeats如果为YES,意味着每隔1.5s都会调用一次self的hidHUD方法

相关文章

  • iOS MVC简单使用

    创建数据模型 现在一个基础shop对象需要这两个信息 首先将字典内容转化为模型 然后在读取plist文件时调用转换...

  • iOS开发中的MVC,MVP和MVVM

    MVC 传统的MVC,Cocoa MVC,以及大多数iOS开发使用的MVC,这三者并不相同。 MVC历史悠久,在不...

  • iOS开发中的MVC、MVP、MVVM

    MVC 传统的MVC,Cocoa MVC,以及大多数iOS开发使用的MVC,这三者并不相同。 MVC历史悠久,在不...

  • iOS开发:MVVM的使用分析

    在iOS开发过程中,MVC的使用可谓是众所周知,作为iOS开发人员也都经常使用这个模式。在MVC下,所有的对象都被...

  • iOS之MV(X) 架构理解分析

    前言 相信很多iOS开发者从学习iOS开始就是用的MVC架构,因为Apple推荐使用MVC,原因:上手快,且开发效...

  • iOS MVVM架构,简单理解

    iOS MVVM架构 iOS中,我们使用的大部分都是MVC架构虽然MVC的层次明确,但是由于功能日益的增加,代码的...

  • iOS开发 - MVC模式与Xcode快捷键

    MVC MVC:Model-View-Controller(模型-视图-控制器),是 iOS 开发中频繁使用的一种...

  • iOS14开发-MVC与Xcode快捷键

    MVC MVC:Model-View-Controller(模型-视图-控制器),是 iOS 开发中频繁使用的一种...

  • iOS MVVM架构

    使用MVVM iOS中,我们使用的大部分都是MVC架构。虽然MVC的层次明确,但是由于功能日益的增加、代码的维护,...

  • iOS开发 如何使用viper架构构建复杂页面?

    iOS开发 使用viper架构构建复杂页面 iOS开发常用的页面架构: MVC MVVM VIPER viper模...

网友评论

      本文标题:iOS MVC简单使用

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