2012-05-21 4 views
1

Я пытаюсь добавить UILabel программно в мой UIToolBar, но доза не кажется видимой. Это то, что я делаю с моим кодом.Программно добавить UILabel в панель инструментов

- (void) viewWillAppear:(BOOL)animated 
{ 
    // Create custom toolbar at top of screen under navigation controller 
    [matchingSeriesInfoToolBar setFrame:CGRectMake(0, 60, 320, 30)]; 
    matchingSeriesInfoToolBar = [UIToolbar new]; 
    [matchingSeriesInfoToolBar sizeToFit]; 
    CGFloat toolbarHeight = 30; 
    CGRect mainViewBounds = [[UIScreen mainScreen] applicationFrame]; 
    [matchingSeriesInfoToolBar setFrame:CGRectMake(CGRectGetMinX(mainViewBounds), 0, CGRectGetWidth(mainViewBounds), toolbarHeight)]; 
    matchingSeriesInfoToolBar.tintColor = [UIColor darkGrayColor]; 
    [self.view addSubview:matchingSeriesInfoToolBar]; 

    // Create size of uitableview (to fit toolbar. 
    [matchingSeriesTableView setFrame:CGRectMake(0, 30, self.view.frame.size.width, self.view.frame.size.height - 30)]; 
    [self.view addSubview:matchingSeriesTableView]; 

    // Ad UILabel to the toolbar 
    UIBarButtonItem *textFieldItem = [[UIBarButtonItem alloc] initWithCustomView:manufSelectionLabel]; 
    matchingSeriesInfoToolBar.items = [NSArray arrayWithObject:textFieldItem]; 
    manufSelectionLabel.text = @"Hello World!"; 

    [super viewWillAppear:animated]; 
} 

Так довольно много я создал пользовательскую панель инструментов, которую я изменил обычное расположение в нижней части экрана, чтобы появиться под UINavigationController, это также добавляется к виду, как это так анимированный должным образом в то вид переходов ..

после чего я создаю размер Tableview так, что она появляется после настраиваемой панели ..

затем оттуда я пытаюсь добавить UILabel на панель .. но для некоторых причина его не получается.

Любая помощь была бы принята с благодарностью.

+1

FYI: Этот код должен быть в 'viewDidLoad' или каждый раз, когда появляется ваш взгляд, вы получите другую панель инструментов и т.д. :) – deanWombourne

+0

OH да !!! (которые могут включать в себя, нажав кнопку назад на другом виде!) жаль, что раньше я работал над анимацией на панели навигации, поэтому попытался работать в этом .. но я никогда не брал код оттуда .. Я так глубоко пытаюсь получить эту панель инструментов, я этого не видел. спасибо за головы –

ответ

8

На самом деле вы должны создать ярлык. Этот код работает отлично.

UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; 
[self.view addSubview:toolbar]; 

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 44)]; 
label.backgroundColor = [UIColor clearColor]; 

UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:label]; 
toolbar.items = [NSArray arrayWithObject:item]; 

label.text = @"Hello World"; 
+0

Спасибо, что отлично поработал с моей текущей панелью инструментов. Я просто пропустил первые две строки, а затем изменил панель инструментов на mytoolbarname на второй и последней строках, и она отлично работала. Большое спасибо. –

+0

Если на панели инструментов есть кнопка, этикетка съедает кнопку. – Shailesh

+0

@Shailesh Я не уверен, что вы подразумеваете под «ест кнопку». Если вы добавили кнопку в IB, вам нужно убедиться, что кнопка все еще находится в массиве toolbar.items. Если этикетка закрывает кнопку, вам нужно убедиться, что она правильно и правильно установлена. – sc0rp10n

0

В коде, который вы отправили, вы никогда не делаете UILabel. Ваш комментарий говорит Объявление UILabel на панели инструментов, но затем переходите к созданию UIBarButtonItem с пользовательским представлением manufSectionLabel.

Где код manufSectionLabel?


PS Эта строка не делает ничего:

[matchingSeriesInfoToolBar setFrame:CGRectMake(0, 60, 320, 30)]; 

, потому что в этот момент matchingSeriesInfoToolbar является nil - вы еще не сделали это еще!

+0

opps matchingSeriesInfoToolBar должен был быть удален, он был частью моего старого кода, который я обманывал, но когда я получил этот вопрос, я просто оставил его. Что касается первой части вашего quesiton, я устанавливаю getter и seters в файле заголовка для uilable. Должен ли я затем вызывать ** manufSelectionLabel.text = @ «Hello World!»; ** перед тем, как попытаться добавить ярлык к uibarbutton thingy? –

+0

моей концепции добавления subviews и т. Д. Действительно не хватает. Есть ли у вас какие-либо предлагаемые учебные пособия, материалы для чтения, которые я мог бы получить, чтобы помочь усилить эту часть моего кода. –

+0

Наличие геттера и сеттера фактически не создает и не настраивает метку. Вы должны выделить его где-нибудь. Если вы создадите метку в своем получателе, вы ДОЛЖНЫ использовать получатель вместо прямого доступа к ivar (то есть self.manufSectionLabel). – sc0rp10n

Смежные вопросы