建議看此文之前,看如下文章
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屬性決定!