Я пытаюсь получить определенные iVars от моего контроллера представления к моему представлению (subview), поэтому drawrect будет рисовать форму на основе пользовательских входов. Когда я жестко кодирую эти переменные в подвью, форма отлично рисуется, но когда я использую геттеры для доступа к пользовательским переменным из контроллера вида, они возвращаются в нуль, и рисунок перепутался. У меня нет никаких ошибок или предупреждений. Я знаю, что есть проблема с геттером, любые предложения? У кого-нибудь есть пример передачи переменных в subview, поэтому cgcontext может использоваться в drawrect? Я застрял много времени. Я предполагаю, что в этот момент моя проблема настолько проста, что я теряю что-то фундаментальное. Я думал, что у меня сеттеры/геттеры упакованы.uiview getter nil
ответ
Удостоверьтесь, что все, что вы получаете «от» (то есть родительский элемент, или представление, или все, что вы получаете от получателей), не равно нулю. Попробуйте установить точку останова прямо перед тем, как обратиться к ним, и подтвердите, что ваши цели действительны и имеют действительные данные.
Я знаю, что ивары на контроллере не ноль, потому что они используются для установки метки на указанном контроллере. Эти ярлыки верны. – richieRich
вы можете вызвать геттеры из отладчика? Являются ли эти свойства или стандартными методами геттера? –
Стандартные методы получения. – richieRich
Нам действительно нужно увидеть больше кода. Бен говорил, что где-то, на ваш взгляд, вы должны установить parent = (some code to get a reference to my parent)
. Убедитесь, что это действительно работает, т. Е. У вас действительно есть ссылка на вашего родителя. Даже если ивары верны, если ваш родитель равен нулю, тогда отправка [nil getSomeiVar]
в большинстве случаев вернет 0.
Без лучшего понимания кода это моё предположение. Где-то в вашем UIViewController, вы должны иметь что-то вроде:
myView = //make your view
[myView setParent:self]
Родитель является переменной точки зрения, с имуществом, так что вы можете получить доступ к нему
Edit: Почему это важно, если мы знаем, что ты делаешь?
Для SetParent работать, вам необходимо следующее:
- в Ивар
YourUIViewControllerSubclass *parent;
в .h Вашего взгляда в - свойства для этого Ивара
@property (nonatomic, retain) YourUIViewControllerSubclass *parent;
в .h Вашего взгляда в - А синтез для этого Ивара
@synthesize parent;
в ом вашем взгляде находится внутри@implementation
Мое приложение слишком просто для отправки кода. Будет мертвым, отдай то, что я делаю. – richieRich
В нем говорится, что представление не отвечает на setParent. Контроллер просмотра тоже не работает. – richieRich
Помогло ли вам это, или вы можете дать нам дополнительную информацию, чтобы попытаться понять это? –
Да, вы оба были правы, но я взял много от вас помочь мне хоть. В конце концов, мне не пришлось публиковать код. Я должен был забрать свои навыки отладки в большое время. Кто-то в другом месте упоминал нарушения MVC. Я должен был установить ivars в uiview, в пользовательские значения FROM view CONTROLLER. Другими словами, я должен был установить с контроллера, а не получать из подвью.
Было бы проще помочь вам, если вы разместили код, о котором идет речь. –