国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

iOS 封裝導航欄及返回,獲取控件所在控制器的實例

2019-10-21 18:42:31
字體:
供稿:網(wǎng)友

當一個項目發(fā)現(xiàn)每個返回的按鈕都是一樣的,并且標題的字體也不是系統(tǒng)的字體,如果每個頁面都去設置返回按鈕,重新設置標題字體,這樣代碼看著繁雜,而且會浪費很多時間,這時候就有必要封裝一下了。。。

首先返回按鈕,需要在當前頁面pop 到上一個頁面的話,有兩種方式:一 寫一個點擊代理,在用到的頁面實現(xiàn)它,二 就是獲取button所在的當前控制器,然后pop出去。 但是第一個方法,還需要到用到的頁面去實現(xiàn)代理,也比較麻煩,那就來說第二種

首先獲取當前控制器的方法:

UINavigationController *vc = [[UINavigationController alloc] init]; for (UIView* next = [sender superview]; next; next = next.superview) { UIResponder* nextResponder = [next nextResponder]; if ([nextResponder isKindOfClass:[UINavigationController class]]) {  vc = (UINavigationController*)nextResponder;  [vc.topViewController.navigationController popViewControllerAnimated:YES];  return; } }

因為我這里的按鈕在navigationController上所以,這里的控制器變量都是 UINavigationController,如果需要獲取的是一般的UIViewController,那就把上面所有的UINavigationController 改成 UIViewController

獲取完之后,我們就使用這個來封裝自己的簡單的導航欄,示例代碼:

+ (void)setNavigationBarWithTitle:(NSString *)title controller:(UIViewController *)controller{ controller.title = title; [controller.navigationController.navigationBar setTitleTextAttributes:@{ NSForegroundColorAttributeName:kMainTextColor,NSFontAttributeName:[UIFont fontWithName:@"PingFangSC-Light" size:18]}]; //返回按鈕 UIButton *btn = [[UIButton alloc] init]; [btn setImage:[UIImage imageNamed:@"back"] forState:(UIControlStateNormal)]; [btn setTitleColor:kMainTextColor forState:UIControlStateNormal]; btn.titleLabel.font = [UIFont systemFontOfSize:13]; [btn addTarget:self action:@selector(back:) forControlEvents:(UIControlEventTouchUpInside)]; controller.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:btn];}+ (void)back:(UIButton *)sender{ UINavigationController *vc = [[UINavigationController alloc] init]; for (UIView* next = [sender superview]; next; next = next.superview) { UIResponder* nextResponder = [next nextResponder]; if ([nextResponder isKindOfClass:[UINavigationController class]]) {  vc = (UINavigationController*)nextResponder;  [vc.topViewController.navigationController popViewControllerAnimated:YES];  return; } }}

以上這篇iOS 封裝導航欄及返回,獲取控件所在控制器的實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網(wǎng)。


注:相關教程知識閱讀請移步到IOS開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 郯城县| 云霄县| 广元市| 馆陶县| 安岳县| 安乡县| 滨州市| 阜新| 泰宁县| 宝坻区| 新昌县| 汶川县| 峨眉山市| 西丰县| 新竹县| 安康市| 海口市| 乌兰察布市| 泰兴市| 吉安县| 汪清县| 尖扎县| 都昌县| 沙湾县| 耒阳市| 江达县| 永嘉县| 丰县| 黄梅县| 阳朔县| 九龙坡区| 昌图县| 焦作市| 新密市| 田林县| 宜丰县| 洪雅县| 安顺市| 永春县| 股票| 乐东|