UI基础知识 -- MVC设计模式 和 试图控制器

MVC

MVC是一种设计模式

好处: 让视图(View)可以复用

应用:

1.视图层(view) 只写视图的布局

2.数据模型层(model) 只写数据的结构(只写NS开头的)

3.控制器(controller) 负责逻辑部分(例如从model里取数据 然后去更改视图的显示)

MVC把工程中的代码模块化(降低耦合度) 尽量让视图部分的代码可以复用

一般一个视图控制器控制一个页面

视图控制器

如何为window创建根视图控制器

视图控制器会自带一个view 如果要更改这个view 就必须重写loadView方法

.m中实现这个方法:

// 这个方法是加载视图的 并且加载的是自带的那个view
- (void)loadView
{
// 用上午的loginView替换控制器的view (当然要引入头文件)
    LoginView *loginView = [[LoginView alloc] initWithFrame:[UIScreen mainScreen].bounds];
    loginView.tag = 10000;
// 帮系统给self.view 赋值
    self.view = loginView;
    [loginView release];
}

然后在AppDelegate.m引入RootViewController.h 头文件

self.window.rootViewController 设置根视图控制器

当然需要先创建根视图控制器

RootViewController *rootVC = [[RootViewController alloc] init];

最后进行赋值:

    self.window.rootViewController = rootVC;
    [rootVC release];

控制器的view加载完后

在控制器view加载完后 可以对view上的控件进行设置

// 视图已经加载完成
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    // 更改一下自身view的颜色
    self.view.backgroundColor = [UIColor grayColor];

    // 控制器写逻辑部分
    // 给button添加一个点击方法
    // 由于self.view为UIView类型 要想使用子类的属性必须要将UIView类型转化为LoginView类型
    LoginView *loginView = (LoginView *)self.view;
    [loginView.loginButton addTarget:self action:@selector(loginButtonClick:) forControlEvents:UIControlEventTouchUpInside];

    // 给Textfield设置代理
    loginView.userNameLTView.textField.delegate = self;

    loginView.passWordLTView.textField.delegate = self;

}

// loginButton的点击方法
- (void)loginButtonClick:(UIButton *)button
{
    NSLog(@"我是登陆按钮");
}

-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值