从iOS 7开始,我的UINavigationBar中的rightBarButtonItem在解除模态视图控制器后向下移动。顶部屏幕截图显示正确的对齐方式。底部屏幕截图显示解除模态视图控制器后的错误对齐。
- (void) viewDidLoad
{
[super viewDidLoad];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]
initWithTitle:@""
style:UIBarButtonItemStyleDone
target:self
action:@selector(didPressRightBarButtonItem)
];
[self.navigationItem.rightBarButtonItem
setImage:[UIImage imageNamed:@"shareLightFlat"]
];
}
- (void) didPressRightBarButtonItem
{
[self.navigationController
presentViewController:[[SomePage alloc] init]
animated:YES
completion:nil];
}
在SomePage中,我用它来解雇自己:
[self dismissViewControllerAnimated:YES completion:nil];
答案 0 :(得分:2)
您不需要使用 initWithTitle:@“”
试试这个:
UIBarButtonItem *editBarButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"myImage"] style:UIBarButtonItemStyleDone target:self action:@selector(myAction:)];
self.navigationItem.rightBarButtonItems = @[editBarButton];
答案 1 :(得分:1)
我不知道为什么会这样,但是当我测试它时,如果我将按钮的标题从@“”更改为@“”,它就可以正常工作。看看它是否适合你(我的结果有些不同 - 我的按钮总是放错位置,不仅仅是在演示和解雇之后)。
答案 2 :(得分:1)
您正在分配UIBarButtonItemStyleDone样式按钮,然后设置图像。我认为这样做会更好:
UIButton * aButton = [UIButton buttonWithType:UIButtonTypeCustom];
... // Set frame and addTarget
[aButton setImage:[UIImage imageNamed:@"shareLightFlat"] forState:UIControlStateNormal];
UIBarButtonItem * editBarButton = [[UIBarButtonItem alloc] initWithCustomView:aButton];
我没有看到iOS7的任何相关问题。