【发布时间】:2012-01-15 10:27:28
【问题描述】:
在viewDidLoad 中,我有一个 UINavigationBar,其自定义背景通过以下方式实现:
[self.navigationController.navigationBar insertSubview:[[UIImageView alloc] initWithImage:[UIImage imageNamed:nav_bg_image]] atIndex:100];
在栈顶(称为RVC)我有以下完整代码:
UIImageView *logoView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:navbar_image_logo]];
[self.navigationController.navigationBar insertSubview:[[UIImageView alloc] initWithImage:[UIImage imageNamed:nav_bg_image]] atIndex:100];
[self.navigationItem setTitleView:logoView];
[logoView release];
这非常有效。但是,当我在堆栈上推送一个新的VC 并在viewDidLoad 中使用相同的代码时
UIImageView *logoView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:navbar_image_logo]];
[self.navigationController.navigationBar insertSubview:[[UIImageView alloc] initWithImage:[UIImage imageNamed:nav_bg_image]] atIndex:1];
[self.navigationItem setTitleView:logoView];
[logoView release];
UIBarButtonItem *hButton = [[UIBarButtonItem alloc] initWithTitle:@"Filters" style:UIBarButtonItemStylePlain target:self action:@selector(filtersAction)];
self.navigationItem.rightBarButtonItem = hButton;
[hButton release];
“过滤器”按钮和titleView imageView都没有出现。但是,我知道过滤器按钮已添加到 UI,因为如果我单击它应该出现的区域,则会执行操作。
此外,当我深入到详细视图DVC 并返回时,突然出现了 titleView (logoView)!
我怀疑这是某种内存问题,但我无法解决。
【问题讨论】:
标签: iphone objective-c memory-management uinavigationcontroller uinavigationbar