导航栏在显示 AlertViewController 后更改我的项目位置

Navigation bar change my items positions after show AlertViewController

我的导航栏上有 2 个图标,但是当我显示 alertViewController 时,这些图标改变了它们的位置。

这些是我的图标。

当我显示 alertViewController

时会发生这种情况

这是我的viewController内容。

UIBarButtonItem *helpItem;
UIBarButtonItem *helpItem1;

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    [self setup];
}

-(void)setup{
        helpItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:self action:@selector(helpButtonItemTapped:)];

        helpItem1 = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:self action:@selector(helpButtonItemTapped:)];

        helpItem.image = [UIImage imageNamed:@"test"];

        helpItem1.image = [UIImage imageNamed:@"test"];

        self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:  helpItem, helpItem1, nil];
}

-(void)helpButtonItemTapped:(id)sender{
    UIAlertController *alertController = [UIAlertController
                                          alertControllerWithTitle:@"Title"
                                          message:nil
                                          preferredStyle:UIAlertControllerStyleActionSheet
                                          ];

    [alertController addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) {
        [self.presentedViewController dismissViewControllerAnimated:YES completion:nil];
    }
                                ]];

    [self presentViewController:alertController animated:YES completion:nil];
}

将您的初始 UIBarbuttonItem 代码更改为此

 helpItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"memoAccess"] style: UIBarButtonItemStylePlain target:self action:@selector(helpButtonItemTapped:)];
helpItem1 = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"memoAccess"] style: UIBarButtonItemStylePlain target:self action:@selector(helpButtonItemTapped:)];

截图

我刚遇到同样的问题,但在 Swift 3 中,我就是这样设法解决它的。我更改了以下代码:

    let BarButtonItemVariable : UIBarButtonItem!
    BarButtonItemVariable = UIBarButtonItem(title: "", style: .plain, target: self, action: #selector(self.SomeMethod))
    BarButtonItemVariable.image = UIImage(named: "SomeImage")
    self.navigationItem.rightBarButtonItem = BarButtonItemVariable

为此:

    let BarButtonItemVariable : UIBarButtonItem = UIBarButtonItem(image: UIImage(named : "SomeImage"), target: self, style: .plain, action: #selector(self.SomeMethod))
    self.navigationItem.rightBarButtonItem = BarButtonItemVariable