Я пытаюсь использовать панель инструментов NavigationController в своем приложении. Эта панель инструментов панели инструментов должна меняться в зависимости от того, какой контроллер представления представлен. это очень просто.Панель инструментов uinavigationController с пользовательскими элементами
Что я пытаюсь сделать, так это добавить пользовательские кнопки на панель инструментов с помощью метода initWithCustomView: "UIBarButtonItem. Однако кнопка не появится на панели инструментов. Но если я создаю UIBarButtonItem, используя метод «initWithTitle:» или «initWithBarButtonSystemItem:», появится кнопка. Например, посмотрите на код ниже:
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemBookmarks target:self action:nil];
UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithTitle:@"edit" style:UIBarButtonItemStylePlain target:self action:nil];
NSArray *array = [[NSArray alloc] initWithObjects:item1, item2, nil];
[self setToolbarItems:array];
Если это сделано, кнопки отображаются на панели инструментов. Но, если бы я сделать следующее:
UIButton* replyBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[replyBtn setImage:[UIImage imageNamed:@"Reply_Message.png"] forState:UIControlStateNormal];
[replyBtn addTarget:self action:@selector(replyButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
replyBtn.frame = CGRectMake(10, 0, 40, 40);
UIBarButtonItem *replyButton = [[UIBarButtonItem alloc] initWithCustomView:replyBtn];
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemBookmarks target:self action:nil];
UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithTitle:@"edit" style:UIBarButtonItemStylePlain target:self action:nil];
NSArray *array = [[NSArray alloc] initWithObjects:item1, replyButton, item2, nil];
[self setToolbarItems:array];
В этом коде только item1 и item2 отображаются на панели инструментов. replyButton не отображается на панели инструментов. В месте, где должна находиться кнопка, должно быть пустое место.
Если этот же код используется на обычной панели инструментов, которую я создаю вместо панели навигации NavigationController, появляется кнопка. Я пытаюсь просто использовать одну панель инструментов во всем приложении, чтобы иметь такое же ощущение, что приложение Apple Mail. Причина, по которой мне нужно использовать метод «initWithCustomView:», заключается в том, что один из значков окрашен, и это единственный способ показать цвет на обычной панели инструментов. Теперь я просмотрел документацию по яблокам и не упоминается, почему метод initWithCustomView: не мог быть вызван (или, может быть, я не смог его найти).
Может ли кто-нибудь просветить свет на эту тему, чтобы помочь мне указать в правильном направлении. Спасибо заранее, ребята.
имеют ту же проблему. Интересно, почему он не работает ... Мне может понадобиться просто добавить другую панель инструментов с надписью «add subview». –