日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS开发UI篇—Modal简单介绍

發布時間:2025/7/14 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS开发UI篇—Modal简单介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

iOS開發UI篇—Modal簡單介紹

一、簡單介紹

除了push之外,還有另外一種控制器的切換方式,那就是Modal

任何控制器都能通過Modal的形式展?出來

Modal的默認效果:新控制器從屏幕的最底部往上鉆,直到蓋住之前的控制器為?

二、代碼說明

新建一個項目,在Application的代理中添加window和控制器。

YYAppDelegate.m文件

1 //2 // YYAppDelegate.m3 // 01-modal4 //5 // Created by apple on 14-6-9.6 // Copyright (c) 2014年 itcase. All rights reserved.7 //8 9 #import "YYAppDelegate.h" 10 #import "YYViewController.h" 11 12 @implementation YYAppDelegate 13 14 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 15 { 16 //1.創建window,并設置window的frame 17 self.window=[[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]]; 18 //2.設置window的背景顏色為黑色 19 self.window.backgroundColor=[UIColor blackColor]; 20 21 22 //創建一個導航控制器作為子控制器 23 YYViewController *one=[[YYViewController alloc]init]; 24 self.window.rootViewController=one; 25 26 //3.設置window為主窗口,并顯示 27 [self.window makeKeyAndVisible]; 28 return YES; 29 } 30 31 32 @end

打開modal窗口

YYViewController.m文件

1 //2 // YYViewController.m3 // 01-modal4 //5 // Created by apple on 14-6-9.6 // Copyright (c) 2014年 itcase. All rights reserved.7 //8 9 #import "YYViewController.h" 10 #import "YYtwoViewController.h" 11 12 @interface YYViewController () 13 //當點擊的時候,跳轉到第二個界面 14 - (IBAction)jump2two:(UIButton *)sender; 15 16 @end 17 18 @implementation YYViewController 19 20 - (void)viewDidLoad 21 { 22 [super viewDidLoad]; 23 // Do any additional setup after loading the view from its nib. 24 } 25 26 27 - (IBAction)jump2two:(UIButton *)sender { 28 //創建一個新的modal并彈出 29 YYtwoViewController *two=[[YYtwoViewController alloc]init]; 30 //在two上用導航控制器包裝,讓彈出的模態窗口有一個導航欄可以放返回按鈕 31 UINavigationController *nvc=[[UINavigationController alloc]initWithRootViewController:two 32 ]; 33 [self presentViewController:nvc animated:YES completion:^{ 34 NSLog(@"彈出一個模態窗口"); 35 }]; 36 37 } 38 @end

移除modal視圖

YYtwoViewController.m文件

1 //2 // YYtwoViewController.m3 // 01-modal4 //5 // Created by apple on 14-6-9.6 // Copyright (c) 2014年 itcase. All rights reserved.7 //8 9 #import "YYtwoViewController.h" 10 11 @interface YYtwoViewController () 12 13 @end 14 15 @implementation YYtwoViewController 16 17 - (void)viewDidLoad 18 { 19 [super viewDidLoad]; 20 21 //給導航條添加一個返回按鈕 22 self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc]initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:self action:@selector(change)]; 23 } 24 25 -(void)change 26 { 27 //編寫點擊返回按鈕的點擊事件 28 //點擊返回按鈕,移除當前模態窗口 29 // [self.navigationController dismissViewControllerAnimated:YES completion:^{ 30 // NSLog(@"移除模態窗口"); 31 // }]; 32 33 // 如果一個控制器是以模態的形式展現出來的, 可以調用該控制器以及該控制器的子控制器讓讓控制器消失 34 [self dismissViewControllerAnimated:YES completion:^{ 35 NSLog(@"移除"); 36 }]; 37 } 38 39 @end

三、注意點

(1)modal的特點:當modal窗口彈出(從下往上)的時候,后面的視圖不可點?

(2)彈出控制器的視圖(通過這種方式只能彈出一個視圖)

//創建一個新的modal并彈出YYtwoViewController *two=[[YYtwoViewController alloc]init];//在two上用導航控制器包裝,讓彈出的模態窗口有一個導航欄可以放返回按鈕UINavigationController *nvc=[[UINavigationController alloc]initWithRootViewController:two];[self presentViewController:nvc animated:YES completion:^{NSLog(@"彈出一個模態窗口");}];

(3)移除控制器的視圖(兩種方式都可以)

//編寫點擊返回按鈕的點擊事件//點擊返回按鈕,移除當前模態窗口 // [self.navigationController dismissViewControllerAnimated:YES completion:^{ // NSLog(@"移除模態窗口"); // }];// 如果一個控制器是以模態的形式展現出來的, 可以調用該控制器以及該控制器的子控制器讓讓控制器消失[self dismissViewControllerAnimated:YES completion:^{NSLog(@"移除");}];

(4)提示在實際的開發中,如果控制器之間的關系緊密一般用導航控制器,如果控制器之間的關系不是很緊密就用modal

四、內部機制

(1)彈出之后,window上面只有一個子視圖。

(2)雖然當前界面上展示在我們眼前的時twoview,但是window的根控制器仍然是NJviewController,它并沒有切換window的根控制器,而僅僅只是換了window上面顯示的視圖。

(3)移除的視圖并沒有銷毀,因為控制器并沒有銷毀,所以控制器對應的view也沒有銷毀。

(4)在模態彈出(完全顯示后),在方法中傳入two作為參數,默認就有一個控制器強引用著它。

(5)當向下移除之后,只要調用了控制器的dismiss方法讓窗口關閉,modal就釋放了。

(6)通常彈出的模態窗口都會提供一個導航條,讓界面擁有導航條的最快的方式是給它包裝一個導航控制器。

(7)如果一個控制器是以模態的形式展現出來的。可以調用該控制器以及該控制器的子控制器,讓該控制器消失。

五、數據的傳遞

項目文件結構和storyboard

代碼示例:

YYViewController.m文件

1 //2 // YYViewController.m3 // 02-模態窗口的數據傳遞4 //5 // Created by apple on 14-6-9.6 // Copyright (c) 2014年 itcase. All rights reserved.7 //8 9 #import "YYViewController.h" 10 #import "YYtwoViewController.h" 11 12 @interface YYViewController () 13 14 @end 15 16 @implementation YYViewController 17 18 - (void)viewDidLoad 19 { 20 [super viewDidLoad]; 21 } 22 23 - (void)didReceiveMemoryWarning 24 { 25 [super didReceiveMemoryWarning]; 26 } 27 28 29 /* 30 如果控制器之間的關系比較緊密一般用 UINavigationController 31 如果控制器之間的關系不是很緊密可以用Modal 32 */ 33 34 //通過segue跳轉前,會調用這個方法,在這個方法中把數據傳遞給彈出來的模態窗口 35 -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 36 { 37 //拿到目標控制器 38 UINavigationController *nav=segue.destinationViewController; 39 YYtwoViewController *two=(YYtwoViewController *)nav.topViewController; 40 //傳遞數據 41 two.name=@"文頂頂"; 42 } 43 @end

YYtwoViewController.h文件

1 //2 // YYtwoViewController.h3 // 02-模態窗口的數據傳遞4 //5 // Created by apple on 14-6-9.6 // Copyright (c) 2014年 itcase. All rights reserved.7 //8 9 #import <UIKit/UIKit.h> 10 11 @interface YYtwoViewController : UIViewController 12 @property(nonatomic,copy)NSString *name; 13 @end

YYtwoViewController.m文件

1 //2 // YYtwoViewController.m3 // 02-模態窗口的數據傳遞4 //5 // Created by apple on 14-6-9.6 // Copyright (c) 2014年 itcase. All rights reserved.7 //8 9 #import "YYtwoViewController.h" 10 11 @interface YYtwoViewController () 12 @property (weak, nonatomic) IBOutlet UILabel *nametext; 13 14 @end 15 16 @implementation YYtwoViewController 17 18 19 - (void)viewDidLoad 20 { 21 [super viewDidLoad]; 22 self.nametext.text=self.name; 23 24 //為導航欄添加一個返回按鈕 25 self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc]initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:self action:@selector(black)]; 26 } 27 28 -(void)black 29 { 30 //移除模態窗口 31 [self dismissViewControllerAnimated:YES completion:^{ 32 NSLog(@"成功移除!"); 33 }]; 34 } 35 @end

轉載于:https://www.cnblogs.com/LifeTechnologySupporter/p/9774739.html

總結

以上是生活随笔為你收集整理的iOS开发UI篇—Modal简单介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本精品影院 | 四虎影院在线视频 | 老男人av| 少妇性色av | 日本不卡一| 日本一本在线观看 | 在线观看xxxx| 丰满少妇乱子伦精品看片 | 毛片999| 日本a级无毛 | 18av视频| 亚洲欧洲av在线 | 国产一区不卡在线观看 | 久操亚洲| 久久精品日韩无码 | 日韩一道本 | 五月婷婷综 | 两性视频久久 | 久久免费少妇高潮99精品 | 久久bb | 办公室大战高跟丝袜秘书经理ol | 色婷婷av一区二区三区软件 | av老司机在线观看 | 亚洲欧美日韩国产一区二区 | 东北女人啪啪ⅹxx对白 | 成人国产网站 | 91香蕉久久| 人人插人人搞 | 国产日韩欧美中文 | 91丨porny丨露出 | 免费在线看黄色片 | 国产精品丝袜视频 | 免费观看一区二区三区毛片 | 亚洲乱码视频在线观看 | 亚洲国产视频在线 | 午夜在线观看影院 | 黑白配av | caoporn人人| 日韩三级黄色片 | 日韩激情av在线 | 国产精品无 | 131mm少妇做爰视频 | 啪啪免费| 丁香花电影免费播放电影 | 悠悠色综合网 | 国产精品88av| 午夜有码 | 性中国古装videossex | 久久婷婷国产麻豆91天堂 | 国产精品久久久久久久久动漫 | 日本视频免费看 | 日韩激情床戏 | 女人毛片视频 | 日韩视频一二三 | 秋霞av鲁丝片一区二区 | 久久亚洲AV无码精品 | 99久久久久久久久 | av网站在线播放 | 国产ts人妖系列高潮 | 国产精品99久久久久久久 | 天天想你在线观看完整版高清 | 天天躁日日摸久久久精品 | 日本三级黄色录像 | 日韩精品高清视频 | 国产3页| 一区二区免费在线 | 亚洲男人的天堂在线观看 | 激情综合五月 | 国产综合内射日韩久 | 日本黄色一区二区三区 | 久久久久成人精品 | 黄色特级片 | 99久久99九九99九九九 | 久草国产精品 | 亚洲第一色播 | 性活交片大全免费看 | 欧美三级精品 | 国产xxxx孕妇 | 成人在线观看网 | 熟睡人妻被讨厌的公侵犯 | 狼人综合av| 人妻在线一区 | 亚洲一区国产精品 | 免费一级a毛片夜夜看 | 中文字幕在线官网 | 国产精品日韩无码 | 国产欧美精品一区二区 | 美女脱了裤子让男人捅 | 欧美内谢 | 私密spa按摩按到高潮 | 精品一区久久 | 丰满尤物白嫩啪啪少妇 | 麻豆视频在线看 | 亚洲国产成人在线观看 | 在线不卡的av | 欧美成人片在线 | 91福利影院| 国产视频精品自拍 | 国产99久久久 |