NSTextField не будет обновляться

[self.change setStringValue:[NSString stringWithFormat:@"%i", changeValue]];

где изменение — это IBOutlet типа NSTextField. По какой-то причине я не могу заставить текстовое поле отображать все, что захочу. Каждый раз, когда я бегу, поле равно "0". Любые идеи о том, почему это не изменится?


person Kyle Parisi    schedule 21.09.2012    source источник
comment
Попробуйте зарегистрировать как self.change, так и changeValue, чтобы увидеть, что они вам дают.   -  person rdelmar    schedule 22.09.2012
comment
Надо было упомянуть об этом раньше. changeValue в порядке (int). self.change дает мне объект, а self.change.stringValue совпадает с changeValue   -  person Kyle Parisi    schedule 22.09.2012
comment
У вас есть какой-либо другой код, который повлияет на это текстовое поле? Какие-либо методы делегата реализованы?   -  person rdelmar    schedule 22.09.2012
comment
я думаю, что на один шаг ближе ... из всей моей отладки я использовал функцию awakeFromNib, которая установила ее в 0. Я смог установить строку в любом месте в этом методе. Я удалил метод, и теперь ничего не показывает. Как установить строку из другого метода?   -  person Kyle Parisi    schedule 22.09.2012
comment
Вы должны иметь возможность поместить строку кода, которую вы разместили, в любой вызываемый метод, и он должен работать. Я не могу сказать, где, не зная структуры вашего приложения.   -  person rdelmar    schedule 22.09.2012
comment
Ты прав. Я понял, где я ошибся, просто нужно придумать правильный способ сделать это, и я отчитаюсь.   -  person Kyle Parisi    schedule 22.09.2012
comment
Вам не нужно устанавливать строковое значение для NSTextField, если вы устанавливаете значение int. Вы можете сделать это просто так: [self.change setIntValue:changeValue];   -  person Justin Boo    schedule 22.09.2012


Ответы (3)


Никогда не обновляйте текстовое поле или всплывающую кнопку в инициализации. Вы должны заполнить значения по умолчанию в awakeFromNib или некоторых других делегатах после инициализации класса.

person Anoop Vaidya    schedule 22.09.2012

Хорошо, вот неловкая ошибка новичка, на которой другим стоит поучиться. Я вызывал свое setstringvalue еще до того, как представление было загружено; в методе didfinishlaunching. Используйте метод awakefromnib, чтобы убедиться, что ваш просмотр загружен. Через Apple:

Finally, after all the objects are fully initialized, each receives an awakeFromNib message.
person Kyle Parisi    schedule 22.09.2012
comment
Это должно работать в applicationDidFinishLaunching: (которое вызывается после awakeFromNib). Как вы загружаете свой вид? Вы загружаете его явно или только в главном окне приложения? - person rdelmar; 22.09.2012
comment
главное окно приложения. Я думал, что didfinish тоже должен работать... Я запутался, ха-ха. - person Kyle Parisi; 22.09.2012

Убедитесь, что выход действительно связан с NSTextField, который вы поместили в файл xib.

person Ramy Al Zuhouri    schedule 21.09.2012
comment
Подтверждено, что я верю imgur.com/CpKOy. Наверное, это что-то действительно глупое, чего я не делал. - person Kyle Parisi; 22.09.2012