国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 沙洋县| 连平县| 上思县| 开鲁县| 陈巴尔虎旗| 乌拉特后旗| 巴林左旗| 神池县| 泽库县| 张家口市| 翼城县| 莎车县| 岳池县| 义马市| 鄂尔多斯市| 乐业县| 乐昌市| 阿图什市| 黎平县| 凤台县| 大邑县| 靖宇县| 瓮安县| 白河县| 丹江口市| 独山县| 巫山县| 东明县| 治县。| 通州市| 大庆市| 尚义县| 开江县| 威海市| 油尖旺区| 方正县| 闽侯县| 微山县| 淮滨县| 古田县| 承德市|