Вызов метода класса из другого класса в Objective-C (Какао) - PullRequest
0 голосов
/ 03 декабря 2011

Я новичок в программировании на Какао, поэтому я все еще пытаюсь понять некоторые основные понятия.

Что я хочу сделать (в качестве примера) - написать приложение с несколькими NSTextFields.Тем не менее, эти NSTextFields необходимо для связи с отдельными классами.Кроме того, каждый отдельный класс должен иметь возможность получать и устанавливать данные друг от друга.

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

-(void)settextfield:(NSString*)stringy;
{
    [TextField setStringValue:stringy];
}   

Вот код вызова (мы вызываем его из другого класса, TestClass) ...

-(IBAction)test:sender;
{
 [BundleBrowseTextBox settextfield: @"Testy"];
}

Ничего не происходит.Вероятно, есть какой-то очевидный способ сделать это, но я не смог найти это с помощью поисков в Google.

Ответы [ 4 ]

1 голос
/ 07 декабря 2011

Моя ошибка состояла в том, что я вызывал метод класса вместо экземпляра ... вы можете вызвать экземпляр через IBOutlets и правильно определить эти выходы в Интерфейсном Разработчике.

0 голосов
/ 03 декабря 2011

Вы должны убедиться, что используемые вами указатели не равны нулю.

Одна странная / удобная вещь в objC заключается в том, что вы можете передавать сообщения на ноль, и он не вылетит.

0 голосов
/ 03 декабря 2011

Я полагаю, что вы забыли свой тип параметра в исходном сообщении, это ...

      -(IBAction)test:sender;
      {
        [BundleBrowseTextBox settextfield: @"Testy"];
      }

должно быть

   -(IBAction)test:(id)sender;
   {
      [BundleBrowseTextBox settextfield: @"Testy"];
   }

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

0 голосов
/ 03 декабря 2011

Если я прав, предполагая, что вы пытаетесь установить текст в экземпляре BundleBrowseTextBox, вам следует вызвать settextfield: message для имени экземпляра, а не для имени класса (если BundleBrowseTextBox является экземпляром -а не класс - вам следует избегать заглавных букв для ясности).т.е.:

-(IBAction)test:(id)sender;
{
   // Assuming bbtBox is defined as an instance of BundleBrowseTextBox
   [bbtBox settextfield: @"Testy"];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...