箭头、标识、创建类与其关联
![](https://app.yinxiang.com/shard/s41/res/0d7c6892-7cde-44ee-bf0d-c698e61e9e40/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%889.32.47.png)
![](https://app.yinxiang.com/shard/s41/res/f11e225f-be6f-4f3f-a6ee-c02af8470d81/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%889.34.19.png)
控制第一部分有3行,
第二部分10行。
第二部分10行。
![](https://app.yinxiang.com/shard/s41/res/9f79172b-c44c-49a9-ab15-6a47fe2f2492/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%889.35.38.png)
![](https://app.yinxiang.com/shard/s41/res/9297304f-8a08-4367-a882-57fefda6ca6e/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%889.37.03.png)
![](https://app.yinxiang.com/shard/s41/res/04044be2-6e7a-41cc-bc38-586d9bdea1a2/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%889.56.42.png)
选中TV
“group”,它默认为“Plain”。
![](https://app.yinxiang.com/shard/s41/res/b87a5192-1de2-44aa-b65d-40322dda60e2/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%889.58.57.png)
![](https://app.yinxiang.com/shard/s41/res/95ac256a-2939-4a63-a45e-b8119b994114/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%889.37.37.png)
![](https://app.yinxiang.com/shard/s41/res/6325365f-e848-47f3-a1d4-e85833ce6dde/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%8810.02.12.png)
Separater设置:
默认是有线分割。
![](https://app.yinxiang.com/shard/s41/res/443b294f-aa4e-4ace-b70f-8a6e43eac0fa/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%889.38.14.png)
可以给线加颜色。
![](https://app.yinxiang.com/shard/s41/res/69bf3076-c675-4f35-a22a-643ca17f3ac9/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%8810.04.20.png)
在TV中显示一些内容。
情况1:
情况1:
![](https://app.yinxiang.com/shard/s41/res/523eba76-ea9a-4e3d-b098-517a21c4da4f/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%889.40.19.png)
![](https://app.yinxiang.com/shard/s41/res/f441fe32-a502-40e1-b8e7-fa7245f36e26/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%889.41.24.png)
TableHeaderView 会随着滚动。
如果上面要求不动显示 是个ViewController。
先拖拽1个VIEW 在控件框的下方。
![](https://app.yinxiang.com/shard/s41/res/301a9fdc-e69a-4341-97e4-afd33b2e3a30/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%8810.08.08.png)
![](https://app.yinxiang.com/shard/s41/res/297e6be9-ddbe-409a-9ca4-834e0d093a16/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%889.43.37.png)
header
cell
footer
cell
footer
![](https://app.yinxiang.com/shard/s41/res/31cb3262-5cbf-4d46-b9d3-ee9153d74fa3/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%889.45.07.png)
使用到了TextView.
![](https://app.yinxiang.com/shard/s41/res/0392a512-a0fa-4d79-bccc-6604919b270b/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%8810.10.30.png)
@property ( weak , nonatomic ) IBOutlet UITextView *myTextView;
[ super viewDidLoad ];
self . myTextView . text = @" 个人简介 " ;
}
![](https://app.yinxiang.com/shard/s41/res/7d612c66-8b9b-4876-8a93-0d97540583f6/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%8810.21.01.png)
![](https://app.yinxiang.com/shard/s41/res/e29c3639-9916-4afe-bf17-d96e6d532833/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%8810.32.55.png)
选中Table View
设置Section
![](https://app.yinxiang.com/shard/s41/res/63d9e498-0823-4eba-97ac-4e267782a5c1/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%8810.42.20.png)
很难选到,一般点击一下“Root View Controller”
![](https://app.yinxiang.com/shard/s41/res/3b6d0a45-4ed0-42d3-9c6e-0af640da6273/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%8810.21.29.png)
应用场景:页面一成不变。界面不会改变。
![](https://app.yinxiang.com/shard/s41/res/e0cf4386-2056-4050-b487-04e9ddbb516e/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%8810.23.26.png)
如果是静态Cell
需要把创建TableViewController时生成的模板代码,
两个 协议方法 “分区个数” 、“行数” 代码 注释掉。
Cell不够,就往里拖:
需要把创建TableViewController时生成的模板代码,
两个 协议方法 “分区个数” 、“行数” 代码 注释掉。
![](https://app.yinxiang.com/shard/s41/res/82da9099-8faa-4d05-b27c-6ba3238d2dfa/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%8810.25.17.png)
Accessory Type:
选中该行
![](https://app.yinxiang.com/shard/s41/res/afd82e9f-1053-4f99-972b-8f009ff98a47/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%8810.28.18.png)
1、静态Cell 在Tableview中可以上下拖动
2、当你未设置静态Cell“分区”,默认一个分区。在一个分区内做好设置后。修改分区个数,将创建多个和第一个设置一样的 Cell个数相同的分区。
Xib。
目前学习过的创建页面的方式有:
1、通过类创建
2、通过Storyboard拖拽
现在再学习一种,通过XIB生成页面。
在SB之前,是纯代码+XIB。
一个页面对应一个XIB。
后来SB出现,XIB整合到了SB中。
SB连线方式使得 页面关系清晰。
一个页面对应一个XIB。
后来SB出现,XIB整合到了SB中。
大项目,几个人一起开发,用SB麻烦:
需要同时访问同一个文件。
一般都是纯代码,或纯代码+Xib。
1、纯代码。
一般都是纯代码,或纯代码+Xib。
2、Xib。
正确的方式是,适合用什么你就用什么。
Xib和SB都是拖拽。
动态偏多,界面变化较多,不是一成不变。用代码控制。
静态,改变少。用拖拽。
SB删。
![](https://app.yinxiang.com/shard/s41/res/981cfa15-eab4-4768-9a0d-e2b3d6836da4/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%8811.17.58.png)
Main.interface 中的Main 去掉。
在AppDelegate.m中创建window
- ( BOOL )application:( UIApplication *)application didFinishLaunchingWithOptions:( NSDictionary *)launchOptions {
self
.
window
= [[
UIWindow
alloc
]
initWithFrame
:[
UIScreen
mainScreen
].
bounds
];
ViewController *vc = [[ ViewController alloc ] initWithNibName : @"ViewController" bundle : nil ];
self . window . rootViewController = vc;
[ self . window makeKeyAndVisible ];
// Override point for customization after application launch.
return YES ;
- ( BOOL )application:( UIApplication *)application didFinishLaunchingWithOptions:( NSDictionary *)launchOptions {
ViewController *vc = [[ ViewController alloc ] initWithNibName : @"ViewController" bundle : nil ];
self . window . rootViewController = vc;
[ self . window makeKeyAndVisible ];
return YES ;
}
第一个页面是ViewController,直接把它的XIB当做Storyboard来用。
关联什么的都是一样的,一样跳转到TableViewController。
创建类的时候,勾选生成XIB文件。
![](https://app.yinxiang.com/shard/s41/res/6db24952-a0f1-44ee-88bf-3acc69796af2/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%8810.55.48.png)
![](https://app.yinxiang.com/shard/s41/res/4b5867c7-06a3-4023-a3ae-0bf2679737ce/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%8810.55.54.png)
#import
"AppDelegate.h"
#import "TableViewController.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- ( BOOL )application:( UIApplication *)application didFinishLaunchingWithOptions:( NSDictionary *)launchOptions {
self . window = [[ UIWindow alloc ] initWithFrame :[ UIScreen mainScreen ]. bounds ];
TableViewController *vc = [[ TableViewController alloc ] initWithNibName : @"TableViewController" bundle : nil ];
self . window . rootViewController = vc;
[ self . window makeKeyAndVisible ];
return YES ;
#import "TableViewController.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- ( BOOL )application:( UIApplication *)application didFinishLaunchingWithOptions:( NSDictionary *)launchOptions {
self . window = [[ UIWindow alloc ] initWithFrame :[ UIScreen mainScreen ]. bounds ];
TableViewController *vc = [[ TableViewController alloc ] initWithNibName : @"TableViewController" bundle : nil ];
self . window . rootViewController = vc;
[ self . window makeKeyAndVisible ];
return YES ;
}
XIB编译完之后变长NIB,所以写的NibName。
一般XIB的名字和其类名是一样。
必须一致。
删除文件时:
![](https://app.yinxiang.com/shard/s41/res/2c9cb838-9c23-49fd-b146-5ebbb942edc8/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%8810.59.26.png)
中间是引用删除,不删除源文件。
第三个 删除源文件。
自定义控件。
继承现有的控件,再修改它的功能。
一个控件是其他几个控件的功能的组合。
![](https://app.yinxiang.com/shard/s41/res/ca95f4bc-a749-45bf-b485-5148aec63942/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%8811.29.13.png)
![](https://app.yinxiang.com/shard/s41/res/899f6a5d-eea0-4a13-bfc2-a7ebbae1b00d/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%8811.30.15.png)
XIB表示“页面”才让勾选。
老师笔记:
1、通过纯代码自定义控件
2、通过纯代码+XIB自定义控件。
1、通过纯代码自定义控件
2、通过纯代码+XIB自定义控件。
![](https://app.yinxiang.com/shard/s41/res/ef964cf9-936a-478f-a570-dbd58c210fb6/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%8811.30.56.png)
命名和UIView控件名一样。
![](https://app.yinxiang.com/shard/s41/res/2bf58df7-8073-4e85-aaa4-19514869afdc/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%8811.31.46.png)
XIB拖拽一个VIEW
改大小:
![](https://app.yinxiang.com/shard/s41/res/360edc2b-9d86-417b-afad-d5db6ff787c9/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%8811.32.31.png)
去掉状态栏 “电池”
![](https://app.yinxiang.com/shard/s41/res/2d147559-f940-44bb-b76e-2e0fe73417d0/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%8811.32.38.png)
菊花,改大小,
![](https://app.yinxiang.com/shard/s41/res/c267fecb-8f79-4896-bb7d-e0ddd37023f9/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%8812.50.37.png)
上来就旋转:
![](https://app.yinxiang.com/shard/s41/res/f3d043d7-0b5f-410e-a800-9ac7c4c610ad/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%881.03.21.png)
改View背景颜色
![](https://app.yinxiang.com/shard/s41/res/fc15a444-1ab7-4080-a43d-a8b37015e29f/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%8812.51.57.png)
改Lable字体颜色白
,xib文件关联类代码。因为控件中的内容可能涉及到修改,所以关联到类。
![](https://app.yinxiang.com/shard/s41/res/2cf1a0b1-9d3c-46ed-837d-f700e4bd250a/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%8811.37.31.png)
自定义控件内容(如Label)不允许直接关联到.m中,要求关联到.h中。
自定义控件关联到代码 的.h中。
自定义控件关联到代码 的.h中。
在ViewController中创建。
1、
![](https://app.yinxiang.com/shard/s41/res/ff72f80b-4265-4ec4-b67c-850e5616eb61/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%8811.39.43.png)
XIB可以自定义多个控件。
多个控件并列关系。
![](https://app.yinxiang.com/shard/s41/res/b352edcb-c200-43b4-ad9a-07e819d2b511/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%889.18.45.png)
创建的时候的返回值就是
一个数组。
![](https://app.yinxiang.com/shard/s41/res/29b0e144-710a-489b-ae7e-222b46d093bb/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8A%E5%8D%8811.41.32.png)
- (
void
)viewDidLoad {
[ super viewDidLoad ];
LoadingView *lv = [[[ NSBundle mainBundle ] loadNibNamed : @"LoadingView" owner : self options : nil ] lastObject ];
lv. center = self . view . center ;
[ self . view addSubview :lv];
[ super viewDidLoad ];
LoadingView *lv = [[[ NSBundle mainBundle ] loadNibNamed : @"LoadingView" owner : self options : nil ] lastObject ];
lv. center = self . view . center ;
[ self . view addSubview :lv];
}
改Frame。
第三方框架:不是自己的,不是苹果的。