Uiview геттер ноль - PullRequest
       17

Uiview геттер ноль

0 голосов
/ 24 января 2010

Я пытаюсь получить определенные iVars из моего контроллера представления в мое представление (подпредставление), поэтому drawrect будет рисовать фигуру на основе пользовательских данных. Когда я жестко кодирую эти переменные в подпредставлении, форма отлично отрисовывается, но когда я использую геттеры для доступа к пользовательским переменным из контроллера представления, они возвращаются к нулю, и рисунок портится. Я не получаю ошибок или предупреждений. Я знаю, что есть проблема с геттером, какие-либо предложения? У кого-нибудь есть пример передачи переменных в подпредставление, чтобы cgcontext можно было использовать в drawrect? Я застрял большое время. Я предполагаю, что на данный момент моя проблема настолько проста, что я упускаю что-то фундаментальное. Я думал, что у меня были упакованные сеттеры / геттеры.

Ответы [ 3 ]

0 голосов
/ 24 января 2010

Нам действительно нужно увидеть больше кода. Бен говорил, что где-то на ваш взгляд, вы должны установить parent = (some code to get a reference to my parent). Убедитесь, что это действительно работает, то есть у вас действительно есть ссылка на вашего родителя. Даже если ивари правильные, если ваш родитель ноль, то отправка [nil getSomeiVar] вернет 0 в большинстве случаев.

Без лучшего понимания кода это мое предположение. Где-то в вашем UIViewController у вас должно быть что-то вроде:

myView = //make your view
[myView setParent:self]

Родитель - это переменная представления со свойством, позволяющим получить к нему доступ

Edit: Почему это важно, если мы знаем, что вы делаете?

Чтобы setParent работал, вам нужно следующее:

  1. ивар YourUIViewControllerSubclass *parent; по вашему мнению .h
  2. свойство этого ивара @property (nonatomic, retain) YourUIViewControllerSubclass *parent; по вашему мнению .h
  3. Синтез этого ивара @synthesize parent; в ваших взглядах .m внутри @implementation
0 голосов
/ 25 января 2010

Да, вы оба были не правы, но я много отнял у вас помощь мне, хотя. Мне не нужно было публиковать код в конце концов. Я должен был забрать свои навыки отладки большое время. Кто-то в другом посте упомянул о нарушениях MVC. Я должен был установить ivars в uiview, к пользовательским значениям ОТ КОНТРОЛЛЕРА представления. Другими словами, я должен был установить с контроллера, а не получать из подпредставления.

0 голосов
/ 24 января 2010

Убедитесь, что все, что вы получаете «от» (т. Е. Родитель или представление, или то, к чему вы обращаетесь к получателям), не равно нулю. Попробуйте установить точку останова непосредственно перед тем, как получить к ним доступ и проверить, что ваши цели действительны и имеют действительные данные.

...