(3)UINavigationController 的內容的修改

建議看此文之前,看如下文章
UINavigaiongController的基本使用
UINavigaiongController實現控制器直接的切換
**層次結構 **

@interface UINavigationController : UIViewController 
@interface UIViewController (UINavigationControllerItem) 
@interface UINavigationItem : NSObject <NSCoding> 
@interface UISwitch : UIControl <NSCoding> 
@interface UIControl : UIView 
@interface UIBarButtonItem : UIBarItem <NSCoding>
@interface UIBarItem : NSObject <NSCoding, UIAppearance>

//UINavigationController的方法和屬性 
@property(nonatomic,readonly,strong) UINavigationItem *navigationItem; 

//UINavigationItem的方法和屬性 
@property(nullable, nonatomic,strong) UIView *titleView;
@property(nullable, nonatomic,strong) UIBarButtonItem *leftBarButtonItem;
@property(nullable,nonatomic,copy) 
  NSArray<UIBarButtonItem *> *leftBarButtonItems

// UIBarButtonItem 的方法和屬性
- (instancetype)initWithTitle:(nullable NSString *)title style
  (UIBarButtonItemStyle)style target:
  (nullable id)target action:(nullable SEL)action;

- (instancetype)initWithBarButtonSystemItem
  (UIBarButtonSystemItem)systemItem target:
  (nullable id)target action:(nullable SEL)action;
//系統的按鈕,枚舉
typedef NS_ENUM(NSInteger, UIBarButtonSystemItem) {. . .} 

代碼

- (void)viewDidLoad {
    [super viewDidLoad];
    //創建返回按鈕
    //當'返回按鈕'和 title 同時設置時,棧頂界面,只顯示'返回按鈕'
    UIBarButtonItem *backItem = [[UIBarButtonItem alloc]initWithTitle:
    @"返回按鈕" style:UIBarButtonItemStylePlain target:nil action:nil];
    self.navigationItem.backBarButtonItem = backItem;
    
    //創建中間標題文字
    //self.navigationItem.title = @"這是個標題";
    
    //創建中間標題視圖
    //self.navigationItem.titleView = [[UISwitch alloc]init];
    
    //創建左側按鈕
    UIBarButtonItem *lefItem2 = [[UIBarButtonItem alloc]initWithTitle:
    @"左側按鈕" style:UIBarButtonItemStylePlain target:nil action:nil];

    self.navigationItem.leftBarButtonItem = lefItem2;
    
    //創建系統的按鈕
    //target - 目標
    //action - 事件
    UIBarButtonItem *lefItem = [[UIBarButtonItem alloc]
    initWithBarButtonSystemItem : UIBarButtonSystemItemDone target:self 
    action:@selector(hehe)];
    self.navigationItem.leftBarButtonItem = lefItem;
    
    //創建左側,多個按鈕
    self.navigationItem.leftBarButtonItems = @[lefItem,lefItem2];
    
    //創建右側按鈕
    //target: 目標
    //action: 事件
    UIBarButtonItem *rightItem = 
    [[UIBarButtonItem alloc]initWithTitle:@"右側按鈕"
    style:UIBarButtonItemStylePlain target:nil action:nil];
    self.navigationItem.rightBarButtonItem = rightItem;

    UIBarButtonItem *rightItem2 = 
    [[UIBarButtonItem alloc]initWithBarButtonSystemItem:
    UIBarButtonSystemItemSearch target:self action:@selector(hehe)];
    //創建右側多個按鈕
    self.navigationItem.rightBarButtonItems =@[rightItem,rightItem2];
}

效果圖

返回按鈕


中間標題內容

中間標題視圖

左側按鈕

系統的按鈕

注意點
導航欄的內容,由棧頂控制器的navigationItem屬性決定!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容