最近,对于导航栏与导航项的一些问题比较纠结,所以在这儿对这个问题进行详细的研究,好了,话不多说,我们赶紧来看一下接下来的代码:
let nav =UINavigationController(rootViewController:self)
let app =UIApplication.sharedApplication().delegateas!AppDelegate
app.window?.rootViewController= nav
在ViewController里面通过以上三句话给当前的视图控制器添加一个导航。
我在前段时间比较纠结的一个问题是对于一个视图控制器会有下面的情况:
可以看出navigationItem和navigationController是平级的,但是我如下写又会出现下面的情况:
很奇怪吧,第一张图片显示UINavigationtroller和navigationItem处于一个平级的状态,接下来的图片显示navigationtroller下也会显示navigationItem这个属性。
上述出现的问题其实答案很简单,实际上UINavigationtroller并没有navigationItem这样直接的一个属性,因为UINavigationtroller继承自UIViewController,而UIViewController是有navigationItem这个属性的,所以才会出现如上的情况。
因此如下设置是没有效果的:(给导航设置标题)
self.navigationController?.navigationItem.title="Jackie"
正确的是:
self.navigationItem.title="JN"
或者:
self.title="JN"
好了,既然说到了导航,那让我们看看关于设置导航中的导航项的一些方法和关于导航自身的一些属性和方法:
//统一修改导航栏上左右按钮的字体颜色
self.navigationController?.navigationBar.tintColor=UIColor.redColor()
//单独设置导航栏单一按钮颜色
self.navigationItem.leftBarButtonItem?.tintColor=UIColor.redColor()
//修改导航栏背景色
self.navigationController?.navigationBar.barTintColor=UIColor.cyanColor()
//利用按钮设置导航项
letbutton =UIButton(type: .ContactAdd)
button.frame=CGRectMake(0,0,44,44)
self.navigationItem.rightBarButtonItem=UIBarButtonItem(customView: button)
这儿你需要注意的是,如果你自定义按钮添加到导航项上,那么你利用tintColor去更改按钮颜色是无法成功的,因为你添加的是按钮不是导航项,你只需要更改按钮颜色即可。那还有一种设置导航项的方法也比较简单,代码如下:
letleft =UIBarButtonItem(barButtonSystemItem: .Cancel, target:nil, action:nil)
self.navigationItem.leftBarButtonItem= left
上述代码所作出的效果是:
希望在这儿能够帮助大家对于导航项这个控件有比较好的理解。
网友评论