用例子说明MVC 设计模式(以Objective-C 实现)

 

要实现的功能:

对窗体上一个复选框,标签修改,按钮事件进行演示

Xcode新建一个项目

File  ->  Creat Project  ->  Cocoa Application  ->  MyProject(项目名)

创建一个底层实现类(模型Model)

Xcode 项目中选中Classes 文件夹

File  ->  New File  ->  baseClass(文件名)  ->  选中Also create "baseClass.h"

创建一个中间控制类(中间层Controller)

双击  MainMenu.xib(Resources目录下) 文件来启动 Interface Builder

从Tools  ->  Library 中把Object 拉到 XIB 项目中

选中Object ,从菜单中 Tools  ->  identity Inspector

Class identity 栏中Class 命名:controlClass

Class Outlets 栏中添加两项:isChecked , lableValue

Class Actions 栏中添加一项:executeClick:

创建一个窗口(视图View)

从Tools  ->  Library 中拉一个 Push Button ,一个Lable ,一个 Check Box到 XIB 的 Window 窗口中

中间类跟窗口绑定

control + 选中 XIB 窗口中的 Control Class 移动到 Label,从下拉列表中选中lableValue 

以同样的方式实现Check 跟 isChecked 的绑定

control + 选中windows窗口上的Button 移动到 Control Class上,选中下拉列表中executeClick:

为中间控制类创建文件

在XIB 窗口中选中Control Class  ->  FIle  ->  Write Class  ->Objective->  C(Language)  ->Create'.h' file(选中)  ->  Save  ->  选择 加入的项目  ->Add

为了便于管理,不管默认情况下文件放在了哪里,把他们拖到Classes 文件夹中

定义刚建的底层类

Interface 文件

#import <Foundation/Foundation.h>

@interface baseClass : NSObject {

NSString *showValue;

}

-(NSString *)showValue;

-(void)setshowValue:(NSString *)values;

 

@end

 

Implementation 文件

#import "baseClass.h"

@implementation baseClass

-(NSString *)showValue{

return showValue;

}

 

-(void)setshowValue:(NSString *)values{

[values retain];

[showValue release];

showValue=values;

}

 

-(void)dealloc{

[showValue release];

[super dealloc];

}

@end

 

在中间控制类中创建的类中使用底层类

Interface 文件(仅把父类加上)

#import <Cocoa/Cocoa.h>

 

@interface controlClass : NSObject {

IBOutlet id isChecked;

    IBOutlet id lableValue;

}

- (IBAction)executeClick:(id)sender;

@end

 

Implementation 文件

#import "controlClass.h"

#import "baseClass.h"

@implementation controlClass

- (IBAction)executeClick:(id)sender {

baseClass *bClass = [[baseClass alloc] init];

NSString *firstName=@"FirstName";

NSString *secondName=@"SecondName";

if([< /span>isChecked state])

[bClass setshowValue:firstName];

else

[bClass setshowValue:secondName];

[lableValue setStringValue:[bClass showValue]];

[baseClass release];

[firstName release];

[secondName release];

}

@end

执行

command + B 编译 连接

command + R 执行, 生成

点击按钮标签显示:复选框选中为FirstName,不选中为SecondName,即实现了界面通过中间层向底层传递信息(Check Box是否选 中),并由中间层把信息显示在界面上(每次要显示的值)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放羊郎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值