IOS工作笔记(一)

说明:记录下学习IOS的一些琐碎,有些在现在看起来很简单幼稚,不过权当足迹吧!

1.xib开发ipad使用横屏,可以在xib的view设置orientation为landscape,portrait是竖屏。

2.在.m文件中声明UITextField后,若想获取。比如想获取pwd
@property(nonatomic,weak) UITextField *pwd;
那么可以用 self.pwd.text获取。

_pwd.text;// 这也可以获取到。

因为self.view其实调用的是pwd的get方法。就是

1 -(UITextField *)pwd{
2   return _pwd;
3 }

3.字符串比较,看是否相等

1 NSString *str1 = self.pwdField.text;
2 if([str1 isEqualToString:@"123"]){
3   //其它操作
4 }

4.新建一个项目,若不想使用自带的viewController和storyboard,删除之,那么在新建xib文件后容易出现问题就是程序运行后主界面是空白的。这时可以这么来解决,就是自己定义需要现实的view。
①在Supporting Files文件夹,编辑plist文件。将Main storyboard file base name置空(因为storyboard文件已删除)。
②在Appdelegate.m的

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

方法中添加代码。如想展示LoginViewController,那么可以这样写。固定格式

1 self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
2 self.window.rootViewController = [[LoginViewController alloc]init];
3 [self.window makeKeyAndVisible];//让视图可见,并显示在屏幕上

5.使用xib文件连线时,必须把view也连起来,否则就是没有画面的程序,切记。

6.显示控件时,需要用以下代码。如:

1 [self.view addSubview:btn1];
2 [self.view addSubview:btn2];

按钮添加事件时,可以用

1 [btn1 addTarget:self action:@selector(btnPressed:) forControllerEvents:UIControlEventTouchUpInside];
2 -(void)btnPressed:(id) sender{
3   UIButton *btn = (UIButton *)sender;
4   //按钮的事件代码
5 }

当然也有如下形式,最好使用上边的。(id)sender这个参数指button本身,

1 -(void) login{ //该函数没有参数,容易出错
2     //事件
3 }

7.一般不这样定义button

1 CGRect frame4 = CGRectMake(430, 200, 200, 100);
2 UIButton *loginBtn = [[UIButton alloc]initWithFrame:frame4];

一般是这样来定义

1 loginBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
2 loginBtn.frame = frame4;

8.设置根控制器,需要在AppDelegate中写。一般这种格式是固定的,需要在
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{}
中写。如:

 1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
 2   //必须写在最前边,否则视图不出现
 3   self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
 4   //若要显示其它东西,如百度地图,那么也要声明
 5   self.mapManager = [[BMKManager alloc]init];//不想显示时可以删去
 6
 7   //定义MainViewController为根控制器
 8   UINavigationController *controller = [UINavigationController alloc]initWithRootViewController:[[MainViewController alloc]init]];
 9   self.window.rootViewController = controller;
10   [self.window makeKeyAndVisible];
11   self.window.backgroundColor = [UIColor whiteColor];
12   return YES;
13
14 }

若不想使用UINavigationController,那么可以直接定义

self.window.rootViewController = [[LoginViewController alloc]init];

相当于把定义根控制器的那行代码删除即可。
然后对应的,页面之间的跳转有两种方法。

[self presentViewController:mainView animated:YES completion:nil];//view自带的属性
[self.navigationController pushViewController:mainView animated:true];//必须设置根控制器,否则该法无效

9.程序加载时首页展现的内容是在下边方法实现的,并且[super viewDidLoad]不能省略。

1 -(void)viewDidLoad{
2   [super viewDidLoad];
3     //其它代码
4 }

[email protected]属性的区别
weak:一般用于UI组件,如UIButton,UILabel,UITextField等。
strong:用于一般对象,如数组等
copy:用于NSString
assign:用于基本类型
在xib和纯代码中是有区别的,xib中UI组件用weak,subViews数组会强引用这些组件;纯代码写时,就得用strong属性了,否则会报

Assigning retained object to weak variable; object will be released after assignment
切记。

NSArray和NSDictionary的用法举例,字典本身就属于键值对,其中的key为icon和desc,不同图片的key对应不同的值。

 1 @property(nonatomic,strong)NSArray *imageData;
 2 NSMutableDictionary *image1 = [NSMutableDictionary dictionary];
 3 image1[@"icon"] = @"hello"; //属于键值对形式
 4 image1[@"desc"] = @"这是一张图片的说明";
 5
 6 NSMutableDictionary *image2 = [NSMutableDictionary dictionary];
 7 image2[@"icon"] = @"hello2";
 8 image2[@"desc"] = @"这是一张图片的说明2";
 9
10 //快速的创建数组
11 self.imageData = @[image1,image2];

当程序中使用较多的key,为了防止把key拼错,可以定义宏常量,如

#define IconKey @"icon"

以后用到@"icon"时,可以用IconKey直接代替

时间: 2024-10-27 20:10:56

IOS工作笔记(一)的相关文章

iOS工作笔记之NSClassFromString

id myObj = [[NSClassFromString(@"MySpecialClass") alloc] init]; 和 id myObj = [[MySpecialClass alloc] init]; 是一样的.但是,如果你的程序中并不存在MySpecialClass这个类,下面的写法会出错,而上面的写法只是返回一个空对象而已. 因此,在某些情况下,可以使用NSClassFromString来进行你不确定的类的初始化. 比如在iPhone中,NSTask可能就会出现这种情

IOS工作笔记(二)

1.懒加载(即延迟加载)只有被调用时才初始化,防止资源浪费,需要重写对象 的get方法,且必须写成成员变量形式,如_imageData.可以这么写,如: 1 @property(nonatomic,strong) NSArray *imageData; 2 3 -(NSArray *)imageData{ //重写imageData的get方法 4 if(_imageData == nil){ 5 //初始化数据 6 NSMutableDictionary *image1 = [NSMutabl

IOS工作笔记(五)

说明:记录下学习IOS的一些琐碎,有些在现在看起来很简单幼稚,不过权当学习足迹吧! 1.frame的打印,可以用 NSLog(@"%@",NSStringFromCGRect(self.view.frame)); 2.UIButton文字的对齐方式,以左对齐为例 myBtn.titleLabel.textAlignment = NSTextAlignmentLeft;//这种设置方式无效 myBtn.contentHorizontalAlignment = UIControlConte

IOS工作笔记(三)

说明:记录下学习IOS的一些琐碎,有些在现在看起来很简单幼稚,不过权当学习足迹吧! 1.选定ipad支持的方向,如强制横屏等,需要在General——>Deployment Info ——>Device Orientation选择,含义如下: 所以要想强制横屏的话,可以点选 2.UIView中如何添加xib文件? 如新建一个UIView为DocDetailView,那么建的那个xib文件在custom class中class应写成跟UIView名字一样的,这里要写成DocDetailView,

IOS工作笔记(七)

说明:记录下学习IOS的一些琐碎,有些在现在看起来很简单幼稚,不过权当学习足迹吧! 1.在定义UITableViewCell时,组件可以直接加,也可以添加到contentView中 [self addSubViews:myBtn]; [self.contentView addSubViews:myBtn]; 但最好添加在contentView中,因为contentView可以定义很多东西. 2.关于下拉刷新和上拉加载,可以用是第三方框架MJRefresh,地址在 https://github.c

IOS工作笔记(四)

说明:记录下学习IOS的一些琐碎,有些在现在看起来很简单幼稚,不过权当学习足迹吧! 1.ios7中,对状态栏的调整是在控制器中进行的. 1 //设置状态栏为白色 2 -(UIStatusBarStyle)preferredStatusBarStyle{ 3 return UIStatusBarStyleLightContent; 4 } 5 //隐藏状态栏 6 -(BOOL)prefersStatusBarHidden{ 7 return YES; 8 } 2.给UIImageView或UILa

IOS工作笔记(九)

关于IOS与服务器交互json数据①从服务器接受json数据:这个可以用AFN,接受方式一般为get.如: 1 +(NSArray *)getContactsFromServer:(ZMMeetingAddViewController *)meetingAddController{ 2 NSMutableArray *contactsArr = [NSMutableArray array]; 3 4 NSString *urlGetContactsFromServer = [NSString s

IOS工作笔记(六)

说明:记录下学习IOS的一些琐碎,有些在现在看起来很简单幼稚,不过权当学习足迹吧! 1.NSArray中使用firstObject和lastObject的好处在于,当数组为空时,返回nil,而不会报错. 当数组为空,使用myArray[0]时,会报错. 2.UILabel和UIImageView都可以添加点击事件,以UIlabel为例. 1 UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc]initWithTa

iOS工作笔记(十二)

1.从ControllerA跳往照相UIImagePickerController,只能用presentViewController形式,因为定义UIImagePickerController时, UIImagePickerController *pickerController = [[UIImagePickerController alloc]init]; pickerController.allowsEditing = NO; pickerController.delegate = sel