搭建编辑界面
-
通过storyboard与代码相结合,代替segue 的功能
- 1.创建UIStroryboard对象
- 2.根据此对象实例化viewController
- 3.然后在当前控制器方法中push此viewController,实现跳转
-
[self.view endEditing] = YES,表示退出编辑界面,键盘消失
-
注意:控制器之间传值,一定要注意控制器的子控件有没有加载,一定要在子控件加载完成的时候给子控件赋值。一般在viewDidLoad:中赋值。
block 讲解
- 如何定义block
// blockName:block变量名
<#returnType#>(^blockName)(<#parameterTypes#>) = ^(<#parameters#>) {
<#statements#>
};
- 如何调用block:直接blockName(parameter)。
- block的作用,跟函数/方法很像,代表了一个代码块。只不过方法需要对象来调用,函数声明的时候必须实现。block声明与实现,可以放在2各不同的地方。
- 什么时候使用block
- 逆传:用bloack来传值。
- 处理网络的时候经常使用block封装代码。请求网络数据(延迟)先把展示到控件的代码先保存到block,等请求到数据的时候直接调用block。
- block 轻量级的小弟,代理:打电话给客服。
数据存储
-
5种方式
- xml属性列表(plist)存储
- perference偏好设置
- NSKeyedArchiver归档(NSCoding)
- SQLite 3
- Core Data
-
应用沙盒,每个app都有自己的应用沙盒,与其他app的应用沙盒相互隔离,并拒绝访问。
- documents,苹果不允许写入至documents
- library/caches
- library/preferences
- tmp
-
plist 一般存储数组与字典,不能够存储自定义类型。如果对象是NSString、NSDictionary、NSArray、NSData、NSNumber等类型,就可以使用writeToFile:atomically:方法直接将对象写到属性列表文件中。
-
偏好设置 NSUerDefaults 是单例,底层就是封装了一个字典,写进plist文件中。很多iOS应用都支持偏好设置,比如保存用户名、密码、字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能。
-
NSKeyedArchiver ,自定义对象必须遵守NSCoding协议,并实现协议的方法encodeWithCoder: 与 initWithCoder:。完成归档、解挡。举例:
@implementation Person
- (void)encodeWithCoder:(NSCoder *)encoder {
[encoder encodeObject:self.name forKey:@"name"];
[encoder encodeInt:self.age forKey:@"age"];
[encoder encodeFloat:self.height forKey:@"height"];
}
- (id)initWithCoder:(NSCoder *)decoder {
self.name = [decoder decodeObjectForKey:@"name"];
self.age = [decoder decodeIntForKey:@"age"];
self.height = [decoder decodeFloatForKey:@"height"];
return self;
}
- (void)dealloc {
[super dealloc];
[_name release];
}
@end
- 如果归档是自定义对象数组,底层会遍历数组元素一个一个归档。
- 使用archiveRootObject:toFile:方法可以将一个对象直接写入到一个文件中,但有时候可能想将多个对象写入到同一个文件中,那么就要使用 NSData 来进行归档对象。
UITabBarController
-
轻松的管理多个控制器,实现控制器之间的跳转切换。
-
主流框架应该是:UITabBarController 包含 UINavigationController。
-
在iOS7之后,导航控制器下所有的UIScrollView顶部都会添加额外的滚动区域:64。
-
UITabBarController 的使用步骤
- 初始化UITabBarController
- 设置UIWindow的rootViewController 为UITabBarController
- 根据具体情况,通过addChildViewController 方法添加对应个数的子控制器
-
UITabBarController 添加控制器的方式有两种
//添加单个子控制器
- (void)addChildViewController:(UIViewController *)childController;
//设置子控制器数组
@property(nonatomic,copy) NSArray *viewControllers;
- UITabBar
- 如果UITabBarController有N个子控制器,那么UITabBar内部就会有N个UITabBarButton作为子控件,示例如下:
网友评论