Изменить текст UILabel (UIBarButtonItem) на панели инструментов программно - PullRequest
6 голосов
/ 04 августа 2009

Я начинающий разработчик iPhone. Мой код следующий:

UIBarButtonItem *fixedSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];  
UILabel *lblTotCaratteri = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 25, 15)];
lblTotCaratteri.textAlignment = UITextAlignmentCenter;
lblTotCaratteri.font = [UIFont italicSystemFontOfSize:13.0];
lblTotCaratteri.textColor = [UIColor greenColor];
lblTotCaratteri.backgroundColor = [UIColor clearColor];
lblTotCaratteri.adjustsFontSizeToFitWidth = YES;
lblTotCaratteri.text = @"0";

UIBarButtonItem *lblCaratteri = [[UIBarButtonItem alloc] initWithCustomView: lblTotCaratteri];

inserimentoToolbar.items = [NSArray arrayWithObjects:fixedSpace, lblCaratteri, fixedSpace, nil];

Так что, на мой взгляд, у меня есть UITextView, и эта панель инструментов создана программно. Я хочу изменить текст метки каждый раз, когда добавляю символ в UITextView. Каждый раз, когда изменяется текст UITextView, я могу отображать предупреждение при каждой нажатой клавише. Я не могу понять, как изменить текст метки. Надеюсь, я объяснил свой сценарий. Извините за мой английский. Привет, Лука.

Ответы [ 2 ]

6 голосов
/ 04 августа 2009

Один из способов был бы при условии, что в вашем интерфейсе объявлено InsorimentoToolbar:

[(UILabel *)[[toolbar.items objectAtIndex:1] view] setText:@"sometext"];

Это действительно работает только при условии, что ваша панель инструментов не изменяется (с точки зрения объектов).

OR

Более идеальным решением было бы поместить lblTotCaratteri в ваш интерфейс (в ваш заголовочный файл). Как:

@interface UntitledViewController : UIViewController {
    UILabel *lblTotCaratteri;
}

Тогда ваш включенный код будет выглядеть как

UIBarButtonItem *fixedSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];  
lblTotCaratteri = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 25, 15)];
lblTotCaratteri.textAlignment = UITextAlignmentCenter;
// etc etc etc

Тогда в любой момент просто используйте

lblTotCaratteri.text = @"sometext";
5 голосов
/ 07 февраля 2011

Да, это сработало для меня, я меняю заголовок UIBarButtonItem, когда нажимаю на тот же UIBarButtonItem. Значит, моя потребность была своего рода шлепком. Если щелкнуть первый раз, когда он говорит «MyText1», а затем нажмите еще раз, заголовок изменится на «MyText2». Текст переключается, когда пользователь нажимает кнопку.

-(IBAction)myBarButtonItem:(id)item{

 if(flag){
   flag=FALSE;
   [(UIBarButtonItem *)item setTitle:@"MyText1"];
}
else{
  flag=TRUE;
  [(UIBarButtonItem *)item setTitle:@"MyText2"];
}

ПРИМЕЧАНИЕ: я не создал UIBarButtonItem программно. Я создал в Интерфейсном Разработчике и установил ссылку на метод "myBarButtonItem" на эту кнопку. Поэтому, когда UIBarButtonItem или, скажем, кнопка этого типа нажата, она вызывает метод «myBarButtonItem» и отправляет ссылку на кнопку в качестве параметра, который я затем ввожу приведение к типу (UIBarButtonItem *), и использую свойство setTitle, чтобы изменить его текст или сказать заголовок.

*** Объявите подпись метода, т.е. В вашем заголовочном файле: - (IBAction) myBarButtonItem: (идентификатор) пункт;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...