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

首頁 > 系統 > iOS > 正文

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

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

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

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

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

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 封裝導航欄及返回,獲取控件所在控制器的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 启东市| 舒兰市| 香河县| 蒙自县| 霍州市| 阜南县| 建阳市| 新宁县| 安宁市| 宣武区| 宁德市| 永安市| 克什克腾旗| 瓦房店市| 稻城县| 新绛县| 赤水市| 东乡| 太康县| 丁青县| 厦门市| 宿州市| 宿迁市| 宜城市| 福州市| 建德市| 息烽县| 莲花县| 五家渠市| 隆林| 许昌县| 延川县| 顺昌县| 芮城县| 鞍山市| 宜兴市| 天镇县| 定兴县| 斗六市| 玉林市| 涡阳县|