Работа в обратном направлении от нуля - PullRequest
0 голосов
/ 12 ноября 2010

Я знаю, что как только вы станете лучше в кодировании, вы узнаете, что такое переменные, и здесь могут появиться нулевые значения, которые могут не появиться. На пути к этому состоянию есть какие-либо методы для блокировки вашей переменной, которая претендует на значение null, и проверки того, что она действительно равна нулю, или вы просто используете неправильный код?

Пример:

-(IBAction) startMotion: (id)sender {
    NSLog(@"Forward or back button is being pressed.");
    UIButton * buttonName = (UIButton *) sender;
    NSLog(@"Button Name:  %@", buttonName.currentTitle);
}

Имя кнопки: (ноль) - это то, что отображается в консоли

Спасибо

Ответы [ 3 ]

1 голос
/ 12 ноября 2010

Согласно документации Apple, значение для currentTitle может быть nil. Может быть просто не задано.

Вы всегда можете сделать if (myObject == nil), чтобы проверить, или вв этом случае:

-(IBAction) startMotion: (id)sender {
  NSLog(@"Forward or back button is being pressed.");
  UIButton * buttonName = (UIButton *) sender;
  if (buttonName != nil) {
    NSString *title = buttonName.currentTitle;
    NSLog(@"Button Name:  %@", title);
  }
}

Другой способ проверить, нажата ли кнопка «назад» или «вперед», - это проверить саму id.

//in the interface, and connect it up in IB
//IBOutlet UIButton *fwdButton;
//IBOutlet UIButton *bckButton;

-(IBAction) startMotion: (id)sender {
  NSLog(@"Forward or back button is being pressed.");
  UIButton * buttonName = (UIButton *) sender;
  if (buttonName == fwdButton) {
    NSLog(@"FWD Button");
  }

  if (buttonName == bckButton) {
    NSLog(@"BCK Button");
  }
}

также убедитесь, что ваши розетки и действиявсе связаны в IB, и что вы сохраняете и перестраиваете проект.Я пошел туда, где я изменил что-то в IB, сохранил файл .m (не перо) и выглядел как «почему это не работает ???»

0 голосов
/ 12 ноября 2010

Я использовал неправильное поле в Интерфейсном Разработчике Я использовал Имя из Идентификатора Интерфейсного Разработчика вместо Заголовка в настройках кнопки.

0 голосов
/ 12 ноября 2010

buttonName не может быть нулевым, иначе buttonName.currentTitle приведет к ошибке.

Поэтому сам атрибут currentTitle должен быть нулевым.

Или, может быть, currentTitle - это строка со значением (null).

Как правило, в Objective-C, если у вас есть [[[myObject aMethod] anotherMethod] xyz] и результат null, трудно определить, какой метод вернул значение null. Но с точечным синтаксисом . это не так.

...