Objective c 伊巴布托主义消失
我有以下功能,显示我的应用程序上的顶部栏。它由一个图像和一个UIBarButton组成。我从视图中调用它。当我按下当前控制器并移到下一个控制器,然后移回主控制器时,右栏按钮消失。请帮忙Objective c 伊巴布托主义消失,objective-c,ios,Objective C,Ios,我有以下功能,显示我的应用程序上的顶部栏。它由一个图像和一个UIBarButton组成。我从视图中调用它。当我按下当前控制器并移到下一个控制器,然后移回主控制器时,右栏按钮消失。请帮忙 -(void)setTopBar { self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:0.6367 green:0.6367 blue:0.6367 alpha:1.0]; UIImage *ti
-(void)setTopBar
{
self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:0.6367 green:0.6367 blue:0.6367 alpha:1.0];
UIImage *titleImage = [UIImage imageNamed: MAIN_TOPBAR];
if([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)] ) {
//iOS 5 new UINavigationBar custom background
[self.navigationController.navigationBar setBackgroundImage:titleImage forBarMetrics: UIBarMetricsDefault];
// NSLog(@"loading nav items");
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"More Apps" style:UIBarButtonItemStylePlain target:self action:@selector(loadFAADAds)];
rightButton.tag = 11111;
self.navigationItem.rightBarButtonItem = rightButton;
[rightButton release];
}
else
{
CGRect titleFrame = self.navigationController.navigationBar.frame;
UIImageView *titleImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, titleFrame.size.width,titleFrame.size.height)];
[titleImageView setImage:titleImage];
[titleImageView setTag:TOPBAR_TAG];
// [self.navigationController.navigationBar sendSubviewToBack:titleImageView];
// self.navigationItem.titleView = titleImageView;
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"More Apps" style:UIBarButtonItemStylePlain target:self action:@selector(loadFAADAds)];
self.navigationItem.rightBarButtonItem = rightButton;
//self.navigationController.navigationItem.rightBarButtonItem = rightButton;
[self.navigationController.navigationBar insertSubview:titleImageView atIndex:0];
[self.navigationController.navigationBar sendSubviewToBack:self.navigationController.navigationBar];
[rightButton release];
}
[titleImage release];
}
你留着吗?你为什么要在方法中发布它?从ViewDiUnloadUtiBarButtonItem*rightButton=[[UIBarButtonItem alloc]initWithTitle:@“更多应用程序”样式:UIBarButtonItemStylePlain目标:自我操作:@selector(loadFAADAds)];您不能释放
标题图像
,因为图像名:
不会将所有权转移给您。但您必须释放标题图像视图
。请重新阅读。此声明位于函数中,具有本地作用域。我无法在ViewDidUnLoad中释放它。但是,对于另一个控制器,我在ViewWillEnglish中执行以下操作:-(void)ViewWillEnglish:(BOOL)动画{//NSLog(@“disaper”);if([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)){}else{[[self.navigationController.navigationBar viewWithTag:TOPBAR_TAG]removeFromSuperview];self.navigationController.navigationBar.tintColor=nil;}[super ViewWillEnglish:NO];}我找到了与我所问问题相同的以下答案。我只想知道问题是您将按钮添加到了错误的位置。您不应该将按钮添加到导航控制器的导航项中,而是添加到导航控制器当前显示的控制器的导航项中
-(void)setTopBar
{
self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:0.6367 green:0.6367 blue:0.6367 alpha:1.0];
UIImage *titleImage = [UIImage imageNamed: MAIN_TOPBAR];
if([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)] ) {
//iOS 5 new UINavigationBar custom background
[self.navigationController.navigationBar setBackgroundImage:titleImage forBarMetrics: UIBarMetricsDefault];
// NSLog(@"loading nav items");
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"More Apps" style:UIBarButtonItemStylePlain target:self action:@selector(loadFAADAds)];
rightButton.tag = 11111;
self.navigationItem.rightBarButtonItem = rightButton;
// [rightButton release];
}
else
{
CGRect titleFrame = self.navigationController.navigationBar.frame;
UIImageView *titleImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, titleFrame.size.width,titleFrame.size.height)];
[titleImageView setImage:titleImage];
[titleImageView setTag:TOPBAR_TAG];
// [self.navigationController.navigationBar sendSubviewToBack:titleImageView];
// self.navigationItem.titleView = titleImageView;
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"More Apps" style:UIBarButtonItemStylePlain target:self action:@selector(loadFAADAds)];
self.navigationItem.rightBarButtonItem = rightButton;
//self.navigationController.navigationItem.rightBarButtonItem = rightButton;
[self.navigationController.navigationBar insertSubview:titleImageView atIndex:0];
[self.navigationController.navigationBar sendSubviewToBack:self.navigationController.navigationBar];
//[rightButton release];
}
// [titleImage release];
}