Я пытаюсь использовать панель инструментов NavigationController на своем приложении. toolbarItems этой панели инструментов, предполагают для изменения, в зависимости от которого представлен контроллер представления. это является очень простым.
Что я пытаюсь сделать, должны добавить пользовательские кнопки к панели инструментов с помощью "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. Причина, что я должен использовать "initWithCustomView": метод - то, потому что один из значков окрашен, и это - единственный способ, которым он обнаруживается окрашенный на нормальной панели инструментов. Теперь, я просмотрел документацию яблока и нет никакого упоминания о почему "initWithCustomView": метод нельзя было назвать (или возможно я не мог найти его).
Мог нравиться, что кто-то проливает некоторый свет на эту тему, чтобы помочь мне указать в правильном направлении. заранее спасибо парни.
Я бы поспорил, что элемент не отображается, потому что в его представлении нет ничего. Вы уверены, что в вашем проекте есть изображение под названием Reply_Message.png
? [Изображение UIImageНазование:@"Reply_Message.png"]
может быть nil
.
Вы можете использовать одну панель инструментов во всем приложении, не используя панель инструментов контроллеров навигации. Поскольку ваш код работает с панелью инструментов, отличной от navigationController, это может быть самый простой способ выполнить то, что вы хотите. В делегате вашего приложения попробуйте добавить панель инструментов в окно, как это. Таким образом, он сохраняется во всем приложении. Убедитесь, что вы продумали схему, которая позволит вам получить доступ к панели инструментов для добавления / удаления кнопок или скрытия / отображения ее из различных контроллеров представления.
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
/////// frame sizes ////////
// compensate for the status bar
int statusBarHeight = 20;
// toolbar
int toolbarWidth = window.frame.size.width;
int toolbarHeight = 30; // I think standard size is 30
int toolbarxOffset = 0;
int toolbaryOffset = window.frame.size.height - tHeight;
CGRect toolbarFrame = CGRectMake(toolbarxOffset,
toolbaryOffset,
toolbarWidth,
toolbarHeight);
/////// toolbar //////////////////////
self.myPersistentToolbar = [[UIToolbar alloc] initWithFrame:toolbarFrame];
[window addSubview:self.myPersistentToolbar];
}