панель инструментов uinavigationController с пользовательскими объектами

Я пытаюсь использовать панель инструментов 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": метод нельзя было назвать (или возможно я не мог найти его).

Мог нравиться, что кто-то проливает некоторый свет на эту тему, чтобы помочь мне указать в правильном направлении. заранее спасибо парни.

1
задан Bittu 28 July 2010 в 03:02
поделиться

2 ответа

Я бы поспорил, что элемент не отображается, потому что в его представлении нет ничего. Вы уверены, что в вашем проекте есть изображение под названием Reply_Message.png? [Изображение UIImageНазование:@"Reply_Message.png"] может быть nil.

0
ответ дан 2 September 2019 в 22:39
поделиться

Вы можете использовать одну панель инструментов во всем приложении, не используя панель инструментов контроллеров навигации. Поскольку ваш код работает с панелью инструментов, отличной от 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];
}
0
ответ дан 2 September 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: