标签:style http ar io os 使用 sp for on
MVC框架
1.模型Model:保存应用程序数据的类
2.视图View: 包括窗口,控件等一系列与用户交互的类
3.控制器Controller:把模型和数据绑定在一起的代码。
MVC的目标:
1.最大限度的分离这三类代码,使程序中类型清晰,知道自己该干什么
2.帮助确保代码的最大可重用性,否则实现了按钮的类,要在点击时进行特定的计算,那该按钮则只能在此应用中实用。
?
输出口
1.控制器可以通过一种名为输出口的特殊属性,来与nib文件中的对象关联,可以把输出口理解为指向nib文件中对象的指针。
@property (nonatomic, weak) IBOutlet UILabel *label;
#ifndef IBOutlet
#define IBOutlet
#endif
可见,IBOutlet什么都不是,它唯一的作用就是告诉Xcode,这个属性会与nib文件中的对象进行关联。
苹果将默认的编译器从GCC改为LLVM之后,就不再需要为属性声明相应的实例变量了,对于一个属性来说,如果LLVM找不到与之对应的实例变量,它就会自动创建一个实例变量。
动作方法
可以对nib文件中的界面对象进行设置,以触发控制器类中的某些特殊方法,这种方法称为动作方法Action Method
-(IBAction) doSomething: (id) sender;
IBAction实际为void,不返回任何值。但是会告诉Xcode,此方法会被nib文件中的某个控件触发。
动作方法,要么不接受任何参数,要么只接受一个参数,sender指向触发该动作的控件对象。
设计用户界面:
IOS Human Interface Guidelines(HIG)人机交互指南
做界面设计的时候,应该遵循该指南。
辅助视图快捷键:command+option+enter
通过Control键+鼠标拖拽的方法,创建outlet和action
connection:关联类型,outlet或action或outlet collection
如果不使用IB,建立控件的outlet,atcion了?
1.对于控件,直接将其添加为controller的view的子视图即可,addSubView
则,此时不需要IBoutlet,在controller中,可通过self.view的viewWithTag方法,获得其子控件。
或者,就在controller中定义控件指针,在控件初始化并add进controller的时候,设置此指针。
2.对于action,则是使用addTarget:action:forControlEvents:方法,来定义动作。
- (void)addTarget:(id)target
action:(SEL)action
[btn addTarget:self action:@selector(changToMoreTab) forControlEvents:UIControlEventTouchUpInside];
[viewController1.view addSubview:btn];
Adds a target and action for a particular event (or events) to an internal dispatch table.
样式文本 NSAttributedString
通过此类,可对字符串添加格式信息,比如字体和段落对齐。
可以在整个字符串上使用这些元数据,也可以对字符串的不同部分使用不同的属性。
UILabel有以下两种不同的属性:
_statusLabel.text
_statusLabel.attributedText
初始化字典的方法
类似的 NSArray* array = @[object, ….]
样式文本的初始化,设置
NSMutableAttributedString *styledText =
[[NSMutableAttributedString alloc]initWithString:plaintText];
[styledText setAttributes:dictionary range:nameRange];
应用程序委托
委托:负责为其他对象处理特定任务的对象。不同对象之间通讯的一种方式。比如view经常将controller设置为其委托。
每个app都有且仅有一个UIApplication实例,它负责应用程序的运行循环,以及处理应用程序级的功能。
NSStringFromClass( [AppDelegate class] );
此方法,其实就是将BIDAppdelegate类设置为UIApplication的委托。
这样BIDAppdelegate中就可以响应应用程序生命周期中,不同状态时候触发的响应
比如启动,进入后台,退出等等。。。
@interface BIDAppDelegate : UIResponder <UIApplicationDelegate>
此委托类,需要实现UIApplicationDelegate协议。
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.viewController = [[BIDViewController alloc] initWithNibName:@"BIDViewController" bundle:nil];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
应用程序启动后,会进入此委托方法,
以上代码为:设置委托的window,设置委托的窗口的根视图控制器,显示委托的窗口。
以上代码,在使用single view template模版的时候,都会自动创建好。
注意理解协议,协议可以理解为c++中的虚接口,可以通过继承,修改虚接口的方式,改变动作行为。
但是在oc中,则是采用的协议委托,通过在委托中实现不同的协议方法,来响应不同的行为。
UIApplication
UIApplicationDelegate
UIWindow
ViewController
rootViewController
第03章 实现基本交互
标签:style http ar io os 使用 sp for on
原文地址:http://www.cnblogs.com/wildathearthy/p/4172488.html