在navigationbar上动态添加按钮,主视图动态删除按钮原理及代码讲解

关于在navigationBar上添加自定义按钮后的处理   

我在子视图上的navgationBar上add了一个UISegmented的控件,但是当我返回根视图的时候,这个控件依然存在,请问如何在子视图的controller用代码控制这个view,使得子视图返回的时候这个控件自动remove掉?
哪位大侠处理过?
这是主视图navBar

 
点击一个push到子视图

 
点击默认的back回到主视图

 
这是控件的代码
?
1
2
3
4
5
6
7
8
9
10
NSString *string = [ NSString stringWithFormat:@ "%@" ,@ "seg" ];
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:[ NSArray arrayWithObjects:string, nil ]];
[segmentedControl addTarget: self action: @selector (segmentAction:) forControlEvents:UIControlEventValueChanged];
segmentedControl.frame = CGRectMake(0, 0, 90, 30);
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
segmentedControl.momentary = YES ;
[ self .navigationController.navigationBar addSubview:segmentedControl];  
[segmentedControl setFrame:CGRectMake(215, 7, 45, 30)];
[segmentedControl release];
ok = NO ;

我在子视图的viewWillDisappear里加下面的方法
我这么处理,但是没有成功,返回的时候视图依然存在,点击崩溃,如果直接在子视图操作是可以remove掉的
?
1
[[ self .navigationController.navigationBar.subviews objectAtIndex:1] removeFromSuperview]


笨死了,解决了
在主视图中加入下面的代码
?
1
2
3
4
5
6
7
8
9
-( void )viewWillAppear:( BOOL )animated {
     NSLog (@ "home:%@" , self .navigationController.navigationBar.subviews);
     for (UIView *views in self .navigationController.navigationBar.subviews) {
         if ([views isKindOfClass:[UISegmentedControl class ]]) {
             NSLog (@ "找到啦" );
             [views removeFromSuperview];
         }
     }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值