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

首頁 > 系統 > iOS > 正文

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

2020-07-26 02:28:33
字體:
來源:轉載
供稿:網友

自我革命――發現問題

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

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

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

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

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

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

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

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

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

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

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

主界面架構是這樣的:


UITabBarController中嵌套UINavigationController.png

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

登錄與訪客.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

總結

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
性欧美亚洲xxxx乳在线观看| 91高潮在线观看| 色偷偷9999www| 欧美性猛交xxxx黑人| 亚洲白拍色综合图区| 日韩av片免费在线观看| 中文字幕综合一区| 欧美成年人视频网站| 久久久久久久久久婷婷| 国产精品视频白浆免费视频| 久久久国产精品x99av| 欧美激情第6页| 久久久久久18| 成人日韩在线电影| 日韩亚洲精品电影| 91天堂在线视频| 久久久久久噜噜噜久久久精品| 色哟哟网站入口亚洲精品| 欧美日韩电影在线观看| 上原亚衣av一区二区三区| 久久久久久久久久久av| 亚洲情综合五月天| 自拍偷拍亚洲一区| 黑人狂躁日本妞一区二区三区| 午夜欧美大片免费观看| 亚洲xxx大片| 奇米4444一区二区三区| 91极品视频在线| 欧美亚洲午夜视频在线观看| 5278欧美一区二区三区| 欧美在线亚洲在线| 91国自产精品中文字幕亚洲| 日韩精品极品在线观看| 亚洲精品电影在线观看| 成人自拍性视频| 国产欧美日韩精品专区| 欧美日韩亚洲视频一区| 在线播放日韩精品| 5278欧美一区二区三区| 国产精品va在线播放| 日韩最新免费不卡| 久久久噜噜噜久久| 91av中文字幕| 亚洲精品久久久一区二区三区| 91久久在线视频| 在线视频日韩精品| 97香蕉久久夜色精品国产| 国产精品午夜一区二区欲梦| 中文日韩在线视频| 国产成人在线视频| 高清日韩电视剧大全免费播放在线观看| 亚洲成人激情图| 精品久久久一区| 精品magnet| 日韩av在线免费播放| 91精品国产高清自在线看超| 国产日韩精品视频| 久久成人精品一区二区三区| 国产一区二区三区在线观看网站| 久久精品视频99| www.亚洲男人天堂| 欧美综合国产精品久久丁香| 国产91亚洲精品| 亚洲精品久久久久国产| 国产不卡一区二区在线播放| 中文字幕自拍vr一区二区三区| 成人疯狂猛交xxx| 激情久久av一区av二区av三区| 欧美夜福利tv在线| 日韩av手机在线观看| 国产区亚洲区欧美区| 国产精品自产拍在线观看中文| 国产成人激情视频| 精品一区电影国产| 亚洲福利在线播放| 美女扒开尿口让男人操亚洲视频网站| 国色天香2019中文字幕在线观看| 色青青草原桃花久久综合| 欧美精品午夜视频| 精品国内自产拍在线观看| 中国日韩欧美久久久久久久久| 国模视频一区二区| 亚洲小视频在线| 久久影视电视剧免费网站| 国产欧美一区二区三区在线看| 欧美电影《睫毛膏》| 亚洲国产精品人久久电影| 日韩av免费在线播放| 欧美性猛交xxxx乱大交蜜桃| 日韩av免费看网站| 8x海外华人永久免费日韩内陆视频| 久久人人爽人人爽人人片av高请| 成人午夜在线观看| 欧美一级bbbbb性bbbb喷潮片| 久久精品久久精品亚洲人| 国产精品爽爽ⅴa在线观看| 日韩在线免费观看视频| 国产一区玩具在线观看| 主播福利视频一区| 亚洲自拍中文字幕| 亚洲娇小xxxx欧美娇小| 91精品久久久久久综合乱菊| 欧美日韩亚洲精品内裤| 中文字幕日韩视频| 亚洲精品在线观看www| 久久久之久亚州精品露出| 欧美精品做受xxx性少妇| 国产精品美乳在线观看| 欧美性69xxxx肥| 国产精品视频不卡| 日韩亚洲在线观看| 国产精品久久久久久久久久久久久| 久久6免费高清热精品| 97在线视频国产| 欧美日韩性视频在线| 久久人人爽人人爽人人片av高清| 欧美电影院免费观看| 国产精品网红福利| 国产精品看片资源| 国产丝袜精品第一页| 性视频1819p久久| 亚洲综合在线做性| 亚洲黄色在线观看| 日韩精品视频观看| 在线免费看av不卡| 欧美精品999| 欧美性猛交xxxx乱大交极品| 成人国内精品久久久久一区| y97精品国产97久久久久久| 亚洲国产精品久久精品怡红院| 亚洲成人免费网站| 最近的2019中文字幕免费一页| 国产一区私人高清影院| 日韩欧美精品免费在线| 欧美成人免费在线视频| 亚洲综合日韩中文字幕v在线| 亚洲欧美视频在线| 中文字幕在线亚洲| 亚洲欧美综合区自拍另类| 成人午夜激情网| 最近2019年好看中文字幕视频| 国产性色av一区二区| 欧美丝袜第一区| 亚洲欧洲日产国码av系列天堂| 亚洲欧美制服另类日韩| 日韩av在线免费观看| 精品久久久久久国产91| 亚洲自拍偷拍福利| 黑人巨大精品欧美一区二区三区| 欧美日韩在线视频一区二区| 日韩一区二区三区xxxx| www高清在线视频日韩欧美| 亚洲视频电影图片偷拍一区| 亚洲欧美另类自拍| 欧美日韩亚洲视频| 91久久久亚洲精品| 黑人与娇小精品av专区| 日韩a**中文字幕| 欧美激情精品在线| 中文字幕欧美日韩| 欧美激情videoshd| 欧美一区二区大胆人体摄影专业网站| 国产成人在线播放| 久久久女人电视剧免费播放下载|