navigation+tab bar

navigation+tab bar

好了,经过一系列的研究,今天的主题是navigation+tab bar
首先,navigation有几种添加方式。两种最常见的就是直接添加再window上面和添加在每一个tab上面。
navigation是栈模式,首先有一个rootviewcontroller,然后再依次压其他view进栈。

如果应用程序中有tab-bar+navigationbar+tableview呢
那么,我在网上找到了一个绝佳的解决方法。感谢那位大大。
首先建立tab-bar 应用程序,然后将为每个tab建立一个navigationbarcontroller,并且设置一个rootviewcontroller。至于,tableview则是以控件形式加载在每一个view上。

这样就顺利实现了tab-bar+navigationbar+tableview的架构。

那么,如果我们需要给navigationbar设置背景,并自绘left+right按钮呢。
关于设置navigationbar背景,网上普遍有两种方式
1。 addsubview
事实证明,这种方法比较复杂,因为设置navigationbar之后,势必要自定义左右按钮。但是,背景作为addsubview进去的最后一个view,会覆盖掉自己绘制的按钮和定义的title。造成看不见,但是可以响应的情况。
2。drawRect
@implementation UINavigationBar (CustomImage)


-(void)drawRect:(CGRect)rect

{

UIImage *image=[UIImage imageNamed:@"背景.png"];

[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];

}


@end

这个方法真是太棒了。

实现一次,程序中所有的navigationbar的背景都能得到重绘。而且不会覆盖掉自绘的按钮。



关于自绘navigationitem的left+right按钮。

 

UIButton *buttonback=[[UIButton alloc]initWithFrame:CGRectMake(10,0,64,32)];

[buttonback setBackgroundImage:[UIImage imageNamed:@"按钮.png"] forState:UIControlStateNormal];

[buttonback addTarget:self action:@selector(button) forControlEvents:UIControlEventTouchDown];

UIBarButtonItem *backItem=[[UIBarButtonItem alloc]initWithCustomView:buttonback];

self.navigationItem.rightBarButtonItem = backItem;

[buttonback release];


以上是右按钮,左按钮则有区别。

左按钮分leftBarButtonItem和backBarButtonItem

backBarButtonItem的出栈是自动的,但是无法自绘。

自绘只能选择leftBarButtonItem,但是没有关联动作。

出栈动作要自己手动关联,

[self.navigationController popViewControllerAnimated:YES];


至此,navigationbar和navigationitem的背景设置就解决了。

总结一下navigation系列的关系。

navigationController 控制:

rootviewcontroller+一系列viewcontroller

navigationbar ,控制navigationitem

toolbar


navigationitem与viewcontroller一一对应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值