gpt4 book ai didi

iphone - iphone 4.3导航栏问题

转载 作者:行者123 更新时间:2023-12-03 20:52:44 25 4
gpt4 key购买 nike

我现在正在开发一个同时支持 iOS 4.3 和 5.0 的应用程序。

我的代码在 5.0 中运行良好,但在 4.3 中会产生棘手的错误。

问题是:

我有一个包含 tableView 的 View 。该 View 有一个导航栏,其中包含左侧和右侧导航栏项目。一旦我选择 TableView 中的行(并到达其相应的 View )并返回,左侧和右侧导航栏项目都会“消失”。

过去几个小时我一直在解决这个烂摊子,有人能治愈吗?

这是我已经完成的:

这是我在 View 加载时调用的实用方法。

+ (void)setNavigationBarContents:(UIViewController *)view 
{


UIImage *topBarimage=[UIImage imageNamed:NAVIGATION_BAR_IMAGE];


if([view.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) {

[view.navigationController.navigationBar setBackgroundImage:topBarimage forBarMetrics:UIBarMetricsDefault];
}
else
{
[view.navigationController.navigationBar insertSubview:[[UIImageView alloc] initWithImage:topBarimage] aboveSubview:view.navigationController.navigationBar];

}

UIImage *logo=[UIImage imageNamed:LOGO];
UIImageView *logoView=[[UIImageView alloc]initWithImage:logo];
view.navigationItem.titleView = logoView;

UIImage *settingsButtonImage= [UIImage imageNamed:NAVIGATION_SETTINGS];
UIButton *rightBarButton = [UIButton buttonWithType: UIButtonTypeCustom];
[rightBarButton setBackgroundImage: settingsButtonImage forState:UIControlStateNormal];
[rightBarButton addTarget: view action:@selector(settingsButton:) forControlEvents:UIControlEventTouchUpInside];
rightBarButton.frame = CGRectMake(0, 0, 50, 40);
view.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView: rightBarButton];

UIImage *logoutButtonImage= [UIImage imageNamed:LOGOUT];
UIButton *leftBarButton = [UIButton buttonWithType: UIButtonTypeCustom];
[leftBarButton setBackgroundImage: logoutButtonImage forState:UIControlStateNormal];
[leftBarButton addTarget: view action:@selector(logout:) forControlEvents:UIControlEventTouchUpInside];
leftBarButton.frame = CGRectMake(0, 0, 65, 32);
view.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView: leftBarButton];


}

尝试在 viewDidLoad 和 viewWillAppear 中调用它,但没有成功。

这就是我在 viewController 中的调用方式。

- (void)viewDidLoad
{

[super viewDidLoad];

//other setups here.

[Utility setNavigationBarContents:self];

}

最佳答案

我通过添加得到了解决方案这段代码在我的 appDelegate.m

// added so that navigation bar background image works in version lower than 5.0

@implementation UINavigationBar (UINavigationBarCategory)
- (void)drawRect:(CGRect)rect {
UIImage *img = [UIImage imageNamed:NAVIGATION_BAR_IMAGE];
[img drawInRect:rect];
}
@end

关于iphone - iphone 4.3导航栏问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9390480/

25 4 0