真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

UIKit框架(9)控制器的modal切換方式(一)-創(chuàng)新互聯(lián)

在UIKit中,每個控制器管理著App中的一個頁面,多頁面的管理方式包括以下幾種:

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),江漢企業(yè)網(wǎng)站建設(shè),江漢品牌網(wǎng)站建設(shè),網(wǎng)站定制,江漢網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,江漢網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

1)使用模態(tài)方式切換頁面

2)使用導(dǎo)航控制器管理多個頁面

3)使用標(biāo)簽控制器管理多個頁面

modal,即模態(tài)方式,目的控制器被覆蓋著源控制器,并接受用戶的交互

   默認(rèn)的動作是:從屏幕的下方彈出

下面介紹modal切換方式實(shí)現(xiàn)的三種方式以及頁面之間數(shù)據(jù)的傳遞

    代理切換

    storyboard的自動型segue

    storyboard的自動型segue

  • 代碼實(shí)現(xiàn)控制器的modal切換

切換動作中涉及的兩個控制器

     源控制器:執(zhí)行切換動作的控制器

     目的控制器:被切換并顯示的控制器

源控制器使用以下方法切換目的控制器:

- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion

   viewControllerToPresent參數(shù):目的控制器

   flag參數(shù):動畫使能

   completion參數(shù):切換動作完成時執(zhí)行的代碼

    注意:該方法調(diào)用時,源控制器必須已經(jīng)顯示,不要在viewDidLoad方法中調(diào)用

源控制器和目的控制器使用以下方法完成頁面返回的功能:

- (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion

   如果是目的控制器調(diào)用,會自動交給源控制器去執(zhí)行返回動作,即源控制器和目的控制器都可以執(zhí)行,且效果一樣。

  • 代碼切換:示例1

切換到UIAlertViewController

UIAlertController * ac = [UIAlertController alertControllerWithTitle:@"版本更新?" message:@"檢測到新版本,是否到App Store更新?" preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction * a1 = [UIAlertAction actionWithTitle:@"更新" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
    [[UIApplication sharedApplication] openURL:updateURL];
}];
UIAlertAction * a2 = [UIAlertAction actionWithTitle:@"算了" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
    
}];
[ac addAction:a1];
[ac addAction:a2];

[self presentViewController:ac animated:YES completion:^{
    NSLog(@"modal");
}];

    UIAlertController是UIKit中的控制器,并必須使用modal方式顯示

    UIAlertController內(nèi)部已經(jīng)實(shí)現(xiàn)了點(diǎn)擊按鈕執(zhí)行dismissViewController...方法

    UIAlertController用于代替UIAlertView及UIActionSheet

  • 代碼切換:示例2

切換到自定義的控制器

//源控制器:執(zhí)行器執(zhí)行切換動作
AMViewContoller * vc = [[UIViewController alloc] init];
[self presentViewController:vc animated:YES completion:^{
    NSLog(@"modal");
}];
//目的控制器:執(zhí)行返回動作
[self dismissViewControllerAnimated:YES completion:^{
    NSLog(@"返回");
}];

  • 代碼切換:控制器間值的傳遞

正向傳遞:源控制器將數(shù)據(jù)傳遞到目的控制器

   傳遞時機(jī):目的控制器被創(chuàng)建后,目的控制器顯示前

   傳遞方法:

      目的控制器添加屬性

      切換前,為目的控制器的屬性賦值

//目的控制器
@interface AMViewControllerTwo:UIViewController
@property (nonatomic, copy) NSString * str;
@end
@implementation AMViewControllerTwo 
- (void) viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"源控制器:%@", self.str);    
}
@end
//源控制器的切換動作
AMViewControllerTwo * vc = [[AMViewControllerTwo alloc] init];
vc.str = @"這是源控制器AMViewControllerOne給你的數(shù)據(jù)";
[self presentViewController:vc animated:YES completion:^{
    NSLog(@"modal");
}];

逆向傳遞:目的控制器將數(shù)據(jù)傳遞到源控制器

   傳遞時機(jī):目的控制器返回前

   傳遞方法:

      目的控制器添加代理屬性并提出代理協(xié)議

      源控制器成為目的控制器的代理并實(shí)現(xiàn)代理方法

      dismiss前,調(diào)用代理的代理方法并間數(shù)據(jù)作為方法的參數(shù)傳遞

//目的控制器
@class AMViewControllerTwo;
@protocol AMViewControllerTwoDelegate : NSObject 
- (void) viewControllerTwo:(AMViewControllerTwo*) vc dismissWithStr:(NSString *) str;
@end
@interface AMViewControllerTwo
@property (nonatomic, copy) NSString * str;
@property (nonatomic, weak) id delegate;
@end
//目的控制器執(zhí)行dimiss動作
if ( self.delegate && [self.delegate respondsToSelector:@selector(viewControllerTwo:dismissWithStr:)] ) {
    [self.delegate viewControllerTwo:self dismissWithStr:@"這是目的控制器AMViewControllerOnew還你的數(shù)據(jù)"];
}
[self dismissViewControllerAnimated:YES completion:^{
    NSLog(@"返回");
}];
//源控制器遵循代理協(xié)議
@interface AMViewControllerOne : UIViewController 
@end
//源控制器實(shí)現(xiàn)代理方法
- (void) viewControllerTwo:(AMViewControllerTwo*) vc dismissWithStr:(NSString *) str
{
    NSLog(@"目的控制器:%@", );
}
//源控制器的切換動作
AMViewControllerTwo * vc = [[AMViewControllerTwo alloc] init];
vc.str = @"這是源控制器AMViewControllerOne給你的數(shù)據(jù)";
vc.delegate = self;
[self presentViewController:vc animated:YES completion:^{
    NSLog(@"modal");
}];

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


文章題目:UIKit框架(9)控制器的modal切換方式(一)-創(chuàng)新互聯(lián)
鏈接分享:http://weahome.cn/article/cejsgo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部