IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> iOS底层系列之<52>--MVC的变种 -> 正文阅读

[移动开发]iOS底层系列之<52>--MVC的变种

MVC变种代码

1、ViewController
#import "ViewController.h"
#import "JView.h"
#import "Model.h"

@interface ViewController ()<JHViewDelegate>

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"begin");
    
    JView *jview = [[JView alloc] init];
    jview.delegate = self;
    jview.frame = CGRectMake(100, 100, 100, 100);
    [self.view addSubview:jview];

    Model *model = [[Model alloc] init];
    model.name = @"张三";
    model.imageName = @"123";

    jview.model = model;
    
    NSLog(@"--");
}

- (void)appViewDidClick:(JView *)jview {
    NSLog(@"点击了");
}
@end
2.Model
#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface Model : NSObject
@property (copy, nonatomic) NSString *imageName;
@property (copy, nonatomic) NSString *name;
@end

NS_ASSUME_NONNULL_END
#import "Model.h"

@implementation Model

@end

3.JView
#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN
@class Model,JView;

@protocol JHViewDelegate <NSObject>

- (void)appViewDidClick:(JView *)jview;

@end

@interface JView : UIView
@property (strong, nonatomic) Model *model;
@property (weak, nonatomic)id<JHViewDelegate> delegate;
@end

NS_ASSUME_NONNULL_END
#import "JView.h"
#import "Model.h"

@interface JView()
@property (weak, nonatomic) UIImageView *iconV;
@property (weak, nonatomic) UILabel *nameL;

@end

@implementation JView

- (instancetype)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        UIImageView *iconV = [[UIImageView alloc] init];
        iconV.frame = CGRectMake(0, 0, 100, 100);
        [self addSubview:iconV];
        _iconV = iconV;
        
        UILabel *nameL = [[UILabel alloc] init];
        nameL.frame = CGRectMake(0, 100, 100, 30);
        nameL.textAlignment = NSTextAlignmentCenter;
        [self addSubview:nameL];
        _nameL = nameL;
    }
    
    return self;
}

- (void)setModel:(Model *)model {
    _model = model;
    
    self.iconV.image = [UIImage imageNamed:model.imageName];
    self.nameL.text = model.name;
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    if ([self.delegate respondsToSelector:@selector(appViewDidClick:)]) {
        [self.delegate appViewDidClick:self];
    }
}
@end
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-02-09 20:49:02  更:2022-02-09 20:49:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 14:51:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码