IOS工作筆記(一),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 }
10.@property屬性的區別
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直接代替