導(dǎo)航條跳轉(zhuǎn)更改

一直只用他的跳轉(zhuǎn)視圖方式,沒用過他的按鈕之類的,今天用起來挺糾結(jié)的。回過頭來再看看

創(chuàng)建一個(gè)navigationController 并給他個(gè)視圖控制器

UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]];

這樣的話 ViewController 就可以在 ViewDidLoad 里面進(jìn)行操作 比如

//設(shè)定標(biāo)題

self.title = @"首頁";

//修改顏色

self.navigationController.navigationBar.tintColor = [UIColor redColor];

//修改為自定義圖片

采用繼承自UINavigationController 然后重寫 - (void)drawRect:(CGRect)rect

//修改右側(cè)的BarButtonItem? 同理可修改左側(cè)按鈕

UIBarButtonItem *callModalViewButton = [[UIBarButtonItem alloc]? initWithTitle:@"按鈕"

style:UIBarButtonItemStyleBordered

target:self

action:@selector(doClicked)];

self.navigationItem.rightBarButtonItem = callModalViewButton;

如果想更改推出來的子類的返回按鈕的話 可以更改 self.navigationItem.backBarButtonItem;

在看 jinglijun 的博客的時(shí)候http://blog.csdn.net/jinglijun/article/details/7362329

他提到

用了UINavigationController后,viewWillAppear方法是沒有效果的,要用UINavigationControllerDelegate的

– navigationController:willShowViewController:animated:? 方法才可以達(dá)到這個(gè)目的。

所以要做到這個(gè),你必須做以下幾步:

1. 設(shè)置代理類 nav.delegate = self;

2. 代理類實(shí)現(xiàn)UINavigationControllerDelegate Protocol

3. 在代理類中添加– navigationController:willShowViewController:animated:方法

如:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {

[self.myTableView reloadData];

}

但是 我做這個(gè)測試了下? 我的無論是父視圖還是子視圖 都會調(diào)用 ViewWillAppear.所以辯證性的看這個(gè)問題,等遇到了和jinglijun 一樣的情況就注意下。

隱藏NavigationBar

[self.navigationController setNavigationBarHidden:YES animated:YES];

navigation的推轉(zhuǎn)動畫是可以更改的

CATransition *transition = [CATransitionanimation];

transition.duration = 0.3;

transition.timingFunction = [CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionDefault];

transition.type = kCATransitionPush;

transition.subtype = kCATransitionFromLeft;

[self.navigationController.view.layeraddAnimation:transition forKey:nil];

[self.navigationControllerpopViewControllerAnimated:NO];

navigaiton的出棧有這么幾種方式:

[self.navigationController popViewControllerAnimated:YES];? //回到上一個(gè)視圖控制器

[self.navigationController popToViewController:viewController animated:YES];? //回到某一個(gè)視圖控制器

用法:[self.navigationController popToViewController: [self.navigationController.viewControllers objectAtIndex: ([self.navigationController.viewControllers count] -層次)] animated:YES];

[self.navigationController popToRootViewControllerAnimated:YES]; //回到根視圖控制器

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容