0

Я хочу установить текст в позиции leftBarButtonItem/rightBarButtonItem в UINavigationBar. Вы должны использовать UIBarButtonItem, но вы можете поместить в него разные объекты UIView. Сначала я попытался использовать ярлык, но это не сработало. Код находится на C#, но вы должны получить идею:Пользовательский текст в навигационной панели

UILabel textLabel = new UILabel(); 
textLabel.Text = "My custom text which should be displayed in navigation bar"; 
UIBarButtonItem customBarButtonItem = new UIBarButtonItem (textLabel); 
NavigationItem.RightBarButtonItem = customBarButtonItem; 

Метка не показана. Если я использую кнопку, она, похоже, работает (за исключением того, что стиль должен быть адаптирован).

UIBarButtonItem customBarButtonItem = new UIBarButtonItem ("My custom text which should be displayed in navigation bar", UIBarButtonItemStyle.Plain,null); 
NavigationItem.RightBarButtonItem = customBarButtonItem; 

Почему это не возможно использовать UILabel? Каков правильный способ отображения текста в виде заголовка в UIBarButtonItem?

Edit:

Мои текущие выводы:

Либо установить название UIBarButtonItem или установить рамку UILabel (благодаря Anbu.Karthik для этого).

+0

Вы лучше показать реальный код и придерживаться соглашений об именах. Это скорее предположение. –

+0

@HermannKlecker: Я редактировал мой вопрос, чтобы иметь более значимые заполнители. Код - это то, что я хочу использовать позже. Только контент изменится. – testing

ответ

1

изменение

UILabel testLabel = new UILabel(); 
testLabel.frame=CGRectMake(0, 0, 200, 21); 

testLabel.Text = "yuhu"; 
UIBarButtonItem test = new UIBarButtonItem (testLabel.text); 
+1

else проверить рамку метки необходимо или нет –

+0

Единственный конструктор, который я вижу, тот, который я использовал в своем вопросе (вам нужны еще несколько параметров). FIrst, я попытался использовать автоматический макет, который приводит к сбою, потому что он не знает родителя. Теперь я попытался установить рамку, и ярлык будет отображаться! Как бы то же самое работало с авто-макетом? Где мне нужно добавить ограничения? 'Просмотр'' UINavigationController'? – testing

+0

, если вы используете ярлык непосредственно в своем представлении, тогда вы можете иметь дело с автомаркетингом, но UIBarbutton не подчиняется ни одной иерархической цепочке, поэтому здесь нужно только перемещать/назначать текст ярлыка на текст кнопки панели, поэтому рамка метки штраф для здесь –

1

Изменить эту строку кода UIBarButtonItem test = new UIBarButtonItem (testLabel);

UILabel testLabel = new UILabel(); 
testLabel.Text = "yuhu"; 
testLabel.frame=CGRectMake(x, y, width, height); 
//change this line 

UIBarButtonItem *barBtn = [[UIBarButtonItem alloc] initWithCustomView:testLabel]; 
NavigationItem.RightBarButtonItem = test; 
+0

Если я перевешу это в мир C#, это точно такая же строка 'UIBarButtonItem test = new UIBarButtonItem (testLabel);' if * btn * is * testLabel *. Или вы имеете в виду 'UIButton'? – testing

+0

Я только хочу отобразить текст. Первая идея для этого - использовать 'UILabel', но это не сработало для меня. – testing

+0

, но метка не будет придавать никакого значения кнопке на панели, так как она не будет иметь никаких действий. Планируйте добавить к крану жест в uilabel – Mukesh

0

Используйте этот

UIImage *buttonImage = [UIImage imageNamed:@"back.png"]; 
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[button setImage:buttonImage forState:UIControlStateNormal]; 
button.frame = CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height); 
[button addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside]; 

UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 
self.navigationItem.leftBarButtonItem = customBarItem; 
Смежные вопросы