• 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];
    //必须在AppDelegate设置UINavigationController,否则pushViewController无效
    //并且使用pushViewController后,在B页面,会自带一个“Back”按钮返回上一页。

     

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

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

     

    10.@property属性的区别
    weak:一般用于UI组件,如UIButton,UILabel,UITextField等。
    strong:用于一般对象,如数组等
    copy:用于NSString
    assign:用于基本类型,如int、BOOL
    在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直接代替

  • 相关阅读:
    BZOJ3236:[AHOI2013]作业(莫队,分块)
    BZOJ5334:[TJOI2018]数学计算(线段树)
    BZOJ3173:[TJOI2013]最长上升子序列(Splay)
    BZOJ3211:花神游历各国(线段树)
    BZOJ3155:Preprefix sum(线段树)
    HDU5002:Tree(LCT)
    【BZOJ 1911】 [Apio2010]特别行动队
    【BZOJ 2875】 [Noi2012]随机数生成器
    【BZOJ 1054】 [HAOI2008]移动玩具
    【BZOJ 1497】 [NOI2006]最大获利
  • 原文地址:https://www.cnblogs.com/Apologize/p/4173605.html
Copyright © 2020-2023  润新知