亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS開發教程之登錄與訪客的邏輯實現

2019-10-21 18:41:18
字體:
來源:轉載
供稿:網友

自我革命——發現問題

在開發中,一直有這樣一種情境:App的未注冊用戶可以使用部分功能(訪客視圖),一旦需要使用一些核心功能或者獲取個性化、差異化的服務時,就需要用戶登錄(登錄定制)。一般的情況是:

用戶點擊某個按鈕 ——> 彈出登錄界面 ——> 輸入信息  ——> 登錄驗證  ——> 界面發生變化

在幾年前做開發時,由于項目需要快速上線,所以顧不上思考(其實是自己太菜),直接在需要判斷登錄的界面代碼里寫上如下代碼:

BOOL isLogin;if(self.isLogin){ //設置登錄后的界面}else{ //顯示訪客視圖 //如果用戶點擊登錄則跳轉登錄界面 //登錄完以后更新當前界面為登錄后的界面 }

時間一長,代碼一多,就會發現很多界面有如上的重復代碼,這很顯然違背了Do not repeat yourself的原則,而且跳轉的邏輯很煩。于是開始改進代碼。

最先的一個哥們兒的做法是將登錄字段抽取到一個常量中,需要時判斷該值是否為真,然后執行相應的邏輯,這樣每個類中就省去了一個字段。

if(CONSTANT.isLogin){ //設置登錄后的界面}else{ //顯示訪客視圖 //如果用戶點擊登錄則跳轉登錄界面 //登錄完以后更新當前界面為登錄后的界面 }

隨著邏輯的增多,發現公用的代碼越來越多,于是抽取了父類,這樣邏輯就上移到了父類中,所有子類不需要有類似isLogin的屬性來判斷用戶是否登錄。

if(self.isLogin){ //設置登錄后的界面}else{ //顯示訪客視圖 //如果用戶點擊登錄則跳轉登錄界面 //登錄完以后更新當前界面為登錄后的界面 }

突然有一天,我們發現某些App訪客視圖相似度非常大,某些App中的登錄界面也是一樣的,于是發現上面的代碼還是需要精簡,于是我們將上面的else部分也上移到父類中,也就是在父類中判斷用戶是否登錄,未登錄顯示訪客視圖,并且將用戶的是否登錄的字段isLogin抽離到一個專門的用戶模型中。

摸著石頭過河——解決問題

主界面架構是這樣的:

ios訪客模式,ios,登錄界面,第三方登錄
UITabBarController中嵌套UINavigationController.png

一開始,進入的時候,都顯示訪客界面,顏色為青色,點擊中間的+彈出登錄界面,點擊登錄界面的+表示登錄過程,然后主界面顯示登錄后的各個界面,以不同顏色代替,如下圖所示。

ios訪客模式,ios,登錄界面,第三方登錄

登錄與訪客.gif

實現方法

主界面的搭建代碼這里就不貼了,很簡單,主要講解一下登錄與訪客的邏輯實現。

1、父類視圖控制器

@interface BaseViewController : UIViewController@property (nonatomic, assign) BOOL isLogin;@end@implementation BaseViewController-(void)loadView{ //UserModel是一個單例用戶類 self.isLogin = [UserModel shareInstance].isLogin; //根據isLogin判斷用戶是否登錄 如果未登錄就顯示訪客視圖 否則就顯示正常界面 //但是注意 子視圖同樣需要在viewDidLoad中判斷用戶是否登錄 //在登錄界面 應該重新賦值window的rootViewController 刷新控制器的狀態 self.isLogin ? [super loadView] : [self setupVisitorView]; }-(void)setupVisitorView{  UIView *view = [[UIView alloc]initWithFrame:[UIScreen mainScreen].bounds];  view.backgroundColor = [UIColor cyanColor]; self.view = view; }@end

2、子類視圖控制器(四個子類都差不多,這里貼一個)

@implementation FourViewController- (void)viewDidLoad { [super viewDidLoad];  if (self.isLogin) {  self.view.backgroundColor = [UIColor purpleColor]; }}@end

3、中間視圖控制器

@implementation CenterViewController- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; [btn setImage:[UIImage imageNamed:@"plusX_Last"] forState:UIControlStateNormal]; btn.bounds = CGRectMake(0, 0, 64, 64); btn.center = self.view.center; [self.view addSubview:btn]; if (!self.isLogin) {  self.title = @"未登錄";  [btn addTarget:self action:@selector(login) forControlEvents:UIControlEventTouchUpInside]; } else{  self.title = @"已登陸";  [btn addTarget:self action:@selector(close) forControlEvents:UIControlEventTouchUpInside]; }}-(void)login{ [UserModel shareInstance].isLogin = YES; // 一定要重新賦值一次rootViewController [self dismissViewControllerAnimated:YES completion:^{  [UIApplication sharedApplication].keyWindow.rootViewController = [[YFTabbarController alloc]init]; }];}-(void)close{ [self dismissViewControllerAnimated:YES completion:nil]; }@end

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线不卡国产精品| 久久久久久18| 精品国产乱码久久久久久天美| 国产精品入口夜色视频大尺度| 日韩高清电影免费观看完整版| 中文字幕9999| 亚洲精品久久久久久久久久久久久| 欧美激情综合亚洲一二区| 热99精品只有里视频精品| 亚洲级视频在线观看免费1级| 亚洲最大成人网色| 伊人激情综合网| 欧美亚洲一区在线| 欧美男插女视频| 黑人精品xxx一区| 伊人成人开心激情综合网| 亚洲天堂久久av| 91国产精品视频在线| 亚洲欧美一区二区三区在线| 亚洲国产精品专区久久| 91香蕉嫩草神马影院在线观看| 国产美女主播一区| 国产国语videosex另类| 亚洲深夜福利在线| 91精品免费久久久久久久久| 国产精品扒开腿做爽爽爽男男| 国产欧美一区二区三区四区| 麻豆国产va免费精品高清在线| 91九色在线视频| 成人黄色网免费| 日韩欧美黄色动漫| 国产精品女视频| 亚洲日本成人女熟在线观看| 久久成年人视频| 精品在线观看国产| 国产日韩精品综合网站| 日韩禁在线播放| 久久综合国产精品台湾中文娱乐网| 日本精品性网站在线观看| 日本道色综合久久影院| 欧美日韩成人在线播放| 国产97免费视| 亚洲精品一区久久久久久| 日韩欧美国产骚| 成人福利视频网| 亚洲美女中文字幕| 日本精品视频网站| 亚洲国产精品va在线看黑人动漫| 国产在线拍偷自揄拍精品| 亚洲最大的免费| 亚洲精品99久久久久中文字幕| 久久影视电视剧免费网站| 久99九色视频在线观看| 国产精品午夜一区二区欲梦| 最近2019年手机中文字幕| 91久久在线播放| 亚洲男人天堂网站| 国产成人一区三区| 久久免费高清视频| 国产精品高潮粉嫩av| 亚洲国产另类 国产精品国产免费| 乱亲女秽乱长久久久| 欧美肥婆姓交大片| 国产精品免费一区二区三区都可以| 国产午夜精品全部视频播放| 亚洲福利视频网站| 国产精品日韩久久久久| 久久精品一本久久99精品| 国产精品日韩专区| 91精品视频播放| 国产91免费观看| 欧美俄罗斯性视频| 亚洲欧美精品中文字幕在线| 日韩中文在线中文网在线观看| 日韩精品极品视频免费观看| 欧美性xxxx极品hd满灌| 亚洲精品乱码久久久久久金桔影视| 久久九九有精品国产23| 91精品免费看| 精品无码久久久久久国产| 亚洲天堂色网站| 欧美人与性动交a欧美精品| 日产精品99久久久久久| 国产精品久久久久久久电影| 国产精品丝袜一区二区三区| 中文在线资源观看视频网站免费不卡| 日韩中文字幕在线精品| 午夜精品在线观看| 日韩av手机在线| 精品视频偷偷看在线观看| 午夜欧美不卡精品aaaaa| 亚洲欧洲在线免费| 亚洲第五色综合网| 久久久精品2019中文字幕神马| 国产精品高精视频免费| 国产精品成人av在线| 国产精品自产拍在线观看中文| 日本在线观看天堂男亚洲| 亚洲综合精品伊人久久| 国产成人精品久久| 久久精品亚洲一区| 亚洲自拍高清视频网站| 色妞一区二区三区| 在线a欧美视频| 亚洲免费高清视频| 尤物yw午夜国产精品视频| 亚洲人成电影在线| 国产精品白丝jk喷水视频一区| 成人福利网站在线观看11| 日韩暖暖在线视频| 91久久精品美女高潮| 91情侣偷在线精品国产| 亚洲人成网站777色婷婷| 琪琪第一精品导航| 国产亚洲一区二区在线| 欧美激情一级欧美精品| 91精品国产综合久久香蕉的用户体验| 欧美日韩一区二区在线播放| 欧美成人h版在线观看| 亚洲一区二区三区xxx视频| 久久精品成人动漫| 久久久av网站| 久久99国产精品自在自在app| 中文字幕亚洲欧美| 国产视频观看一区| 亚洲欧洲日产国码av系列天堂| 国产欧美日韩中文字幕| 国产一区视频在线播放| 国内精品小视频在线观看| 欧美成人性色生活仑片| 国产亚洲欧美另类中文| 97福利一区二区| 色妞在线综合亚洲欧美| 一区二区在线免费视频| 亚洲国产成人精品久久久国产成人一区| 91精品视频在线免费观看| 成人乱人伦精品视频在线观看| 在线播放日韩专区| 91日韩在线播放| 国产欧美日韩精品在线观看| 九九精品在线视频| 成人中心免费视频| 亚洲成年网站在线观看| 国产精品一区二区电影| 国产精品成人免费电影| 欧美激情va永久在线播放| 亚洲美女又黄又爽在线观看| 亚洲国产精品小视频| 日本免费久久高清视频| 亚洲精品久久视频| 欧美—级高清免费播放| 国产欧美精品一区二区| 亚洲国产精品电影在线观看| 国产ts一区二区| 久久久99久久精品女同性| 欧美成人午夜免费视在线看片| 国产日韩换脸av一区在线观看| 日韩av一区在线| 91久久精品在线| 国产精品视频免费观看www| 国产网站欧美日韩免费精品在线观看| 韩国美女主播一区| 精品激情国产视频| 欧美日韩精品在线观看|