明天這篇是UI的最後一篇了,前面再整理網絡篇
知識點
1.UIStoryBoard引見
2. UIStoryBoard的界面跳轉
3. UIStoryBoard界面之間的傳值
=========================
UIStoryBoard引見
UIStoryBoard是你可以用來定義用戶界面的一種新的方式,像xib。與xib不同的是它可以同時管理多個ViewController,而且可以在UIStoryBoard中配置ViewController 之間的跳轉關系。 假如主窗口只要一個view controller是作為UIStoryBoard的第一個界面,就需求勾選上 Initial Scene。UIStoryBoard將原有工程中的一切xib文件集成在一同,用拖拽的方式樹立起兩個viewController之間的跳轉關系,使得整個順序的UI跳轉邏輯清楚明了。運用UIStoryBoard後,界面相關的代碼編寫將更少。
1.假如主窗口只要一個view controller是作為story board的第一個界面,就需求勾選上 Initial Scene。
選中is initial view controller 以後的scene成為進入使用第一個scene
2.在UIStoryBoard當中可以直接在UITableView上定制cell
=========================
UIStoryBoard的界面跳轉
3.留意push和present的區別
1).push對應pop,present對應dismiss;
2).present只能逐級前往,push一切視圖由視圖棧控制,可以前往上一級,也可以前往到根vc,其他vc。
3).present普通用於不同業務界面的切換,push普通用於同一業務不同界面之間的切換。
4.如何跳轉到未連線的控制器
1)+ (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil;
作用:獲取某個對應的UIStoryboard對象
2)- (id)instantiateViewControllerWithIdentifier:(NSString *)identifier
作用:獲取該UIStoryboard的文件中的某個帶有identifier標識的控制器 //跳轉到未銜接的控制器
//獲得Main.StoryBoard UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; //經過StoryBoardID取得對應的控制器對象 UIViewController *ctl = [storyBoard instantiateViewControllerWithIdentifier:@"ctlC"]; //代碼跳轉 [self.navigationController pushViewController:ctl animated:YES];
6.如何回到前一個界面
在上一級視圖控制器當中完成一個辦法,要滿足一下格式
-(IBAction)+恣意辦法名+(UIStoryboardSegue *)+恣意變量名
//UIStoryBoard的連線回跳辦法 -(IBAction)unWindingSegue:(UIStoryboardSegue *)segue{ NSLog(@"sourceViewController = %@ destinationViewController = %@",segue.sourceViewController,segue.destinationViewController); //作用:在反向傳值當中會使用到
=========================
UIStoryBoard界面之間的傳值
1.正向傳值
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
作用:行將切換場景時分調用
//當切換界面(push,present)的時分,就會調用以下辦法 -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ //正向傳值 if ([segue.identifier isEqualToString:@"login"]) { LoginViewController *ctl = segue.destinationViewController; //賦值 ctl.userNameStr = self.userNameTF.text; ctl.passwordStr = self.passWordTF.text; }
2.反向傳值(傳統的block,協議代理,告訴中心,單例傳值仍然見效)
-(IBAction)unWind:(UIStoryboardSegue *)segue
作用:前往上一個場景時分調用
//UIStoryBoard的連線回跳辦法 //先完成回跳辦法,才干連線 -(IBAction)unWindingSegue:(UIStoryboardSegue *)segue{ //反向傳值(UIStoryBoard公用) //判別能否點擊的是注冊完成 if ([segue.identifier isEqualToString:@"finish"]) { //嚴謹 if ([segue.sourceViewController isKindOfClass:[RegisterViewController class]]) { RegisterViewController *ctl = segue.sourceViewController; //刷新UI self.userNameTF.text = ctl.userNameTF.text; self.passWordTF.text = ctl.passWordTF.text; //作用:在反向傳值當中會使用到 } }
【iOS開發-UI (十)StoryBoard】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!