91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-10-11 15:36:48 來源:腳本之家 閱讀:181 作者:Kaiccy 欄目:移動開發

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

首先返回按鈕,需要在當前頁面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 封裝導航欄及返回,獲取控件所在控制器的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

商城县| 阳朔县| 汤原县| 赤水市| 承德市| 平谷区| 达孜县| 上蔡县| 邯郸县| 井陉县| 北川| 府谷县| 汉寿县| 辽阳市| 正安县| 常州市| 隆回县| 洛浦县| 遂昌县| 焦作市| 陆良县| 呼图壁县| 大同市| 吉水县| 东海县| 巩义市| 如皋市| 逊克县| 深州市| 股票| 万山特区| 黔西县| 井冈山市| 东阳市| 双桥区| 浠水县| 兴隆县| 广东省| 房产| 大英县| 林甸县|