iOS 之 退出app(項(xiàng)目)的幾種方法

原文

路漫漫其修遠(yuǎn)兮,吾將上下而求索。也算是對(duì)程序員的一種真實(shí)寫照了吧。

今天想研究一下iOS中退出項(xiàng)目的方法,說是今天,其實(shí)也關(guān)注并去了解很久了。只是始終找不到自己認(rèn)為很好的方法。今天就先把自己了解的列舉一下,以后如果還能找到認(rèn)為更好的,就在補(bǔ)充吧。

這里是我們?cè)陧?xiàng)目的AppDelegate中普遍寫到的一句代碼(至于擴(kuò)展和豐富,我們暫不去深究):

- (BOOL)application:(UIApplication?*)application didFinishLaunchingWithOptions:(NSDictionary?*)launchOptions {

LoginViewController?*loginVC = [[LoginViewController?alloc]?init];

//? ? UINavigationController *homeNavigationView = [[UINavigationController alloc] initWithRootViewController:loginVC];

//? ? self.window.rootViewController = homeNavigationView;

self.window.rootViewController?= loginVC;

return?YES;

}

下面我們就圍繞LoginViewController這個(gè)登錄界面展開我們的討論。我們都知道,登錄的方式不同,才會(huì)導(dǎo)致退出的方式差異,有登錄才有退出,這是因果關(guān)系。

而我們的登錄方式無外乎這幾種:利用 Modal 形式展示控制器 ;利用導(dǎo)航控制器UINavigationController跳轉(zhuǎn);當(dāng)然也可以更改?UIWindow 的 rootViewController。下面我們就介紹一下這幾種登錄方式吧。

1、退出登錄a

- (void)login{

HomeViewController?*homeVC = [[HomeViewController?alloc]init];

[self?presentViewController:homeVC?animated:YES?completion:nil];

}

- (void)exit{

[self?dismissViewControllerAnimated:YES?completion:nil];

}

這是利用model形式登錄和退出app的。當(dāng)然登錄的動(dòng)畫形式是多選的,你可以挑選一種喜歡的方式,你也可以自定義轉(zhuǎn)場(chǎng)動(dòng)畫,這是你的自由。

/** UIModalTransitionStyleCoverVertical = 0,

UIModalTransitionStyleFlipHorizontal __TVOS_PROHIBITED,

UIModalTransitionStyleCrossDissolve,

UIModalTransitionStylePartialCurl NS_ENUM_AVAILABLE_IOS(3_2) __TVOS_PROHIBITED, */

這里我做了個(gè)gif動(dòng)畫,是關(guān)于系統(tǒng)自帶的,可以看下:


2、登錄退出b

- (void)login{

HomeViewController?*homeVC = [[HomeViewController?alloc]init];

[self.navigationController?pushViewController:homeVC?animated:YES];

}

- (void)exit{

[self.navigationController?popViewControllerAnimated:YES];

}

這是利用導(dǎo)航控制器UINavigationController跳轉(zhuǎn)。也是我們?cè)陧?xiàng)目中經(jīng)常用到的一種方式,當(dāng)然,登錄退出也是常用這種方式的。這里就不過多去述。

3、更改?UIWindow 的 rootViewController

- (void)login{

HomeViewController?*homeVC = [[HomeViewController?alloc]init];

self.window.rootViewController = homeVC;

}

這個(gè)是寫在AppDelegate中的,退出時(shí)再調(diào)用該方法。

4、退出app程序(不推薦使用,這種方式會(huì)讓用戶覺得app閃退)

- (void)exitApplication {

UIWindow?*window =? [UIApplication?sharedApplication].keyWindow;

[UIView?animateWithDuration:1.0f?animations:^{

window.alpha?=?0;

window.frame?=?CGRectMake(0, window.bounds.size.width,?0,?0);

}?completion:^(BOOL?finished) {

exit(0);

}];

}

**?警告**:不要使用exit函數(shù),調(diào)用exit會(huì)讓用戶感覺程序崩潰了,不會(huì)有按Home鍵返回時(shí)的平滑過渡和動(dòng)畫效果;另外,使用exit可能會(huì)丟失數(shù)據(jù),因?yàn)檎{(diào)用exit并不會(huì)調(diào)用-applicationWillTerminate:方法和UIApplicationDelegate方法;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 閱讀目錄 1、登錄退出a 2、登錄退出b 3、更改UIWindow 的 rootViewController 4、...
    762683ff5d3d閱讀 1,846評(píng)論 0 0
  • *7月8日上午 N:Block :跟一個(gè)函數(shù)塊差不多,會(huì)對(duì)里面所有的內(nèi)容的引用計(jì)數(shù)+1,想要解決就用__block...
    炙冰閱讀 2,711評(píng)論 1 14
  • 1,Search Bar 怎樣去掉背景的顏色(storyboard里只能設(shè)置background顏色,可是發(fā)現(xiàn)cl...
    以德扶人閱讀 2,874評(píng)論 2 50
  • 沒想過會(huì)在一家小小的快餐店里寫下自己對(duì)2016的回顧。 吃著漢堡喝著可樂,2016就這么過去了,似乎這一年一事無成...
    末世翛然閱讀 260評(píng)論 1 1
  • 文:蟈蟈 今年今日高考正當(dāng)時(shí),七年前的今天我也坐在考場(chǎng)里,七年后的今天坐在辦公室里回憶那年高考。 都說高考是農(nóng)村孩...
    ICE蟈蟈閱讀 463評(píng)論 0 3

友情鏈接更多精彩內(nèi)容