2014-01-17 6 views
0

Я пытаюсь использовать красиво выглядящий элемент управления, но не могу понять, как: а) как загрузить данные и б) как преобразовать этот элемент управления в раскадровку.Как загрузить UIView subview

управления является here

Мой код для загрузки заголовков из подвиды работает отлично.

-(NSString *)titleForCollapseClickAtIndex:(int)index { 
    //NSLog(@"%s", __FUNCTION__); 

    switch (index) { 
     case 0: 
      return @"Item Information"; 
      break; 
     case 1: 

Я не могу понять, как загрузить этот следующий метод:

-(UIView *)viewForCollapseClickContentViewAtIndex:(int)index { 
    NSLog(@"%s", __FUNCTION__); 
    switch (index) { 
     case 0: 
      return itemView; 
      break; 

(UIView *) ItemView (после инициализации) является:

- (void)loadElements 
{ 
    NSLog(@"%s", __FUNCTION__); 

    [self.item setText: @"try this"]; 
    self.category.text = @"category"; 
    self.date1.text = @"todays date"; 
    self.date2.text = @"another date"; 
    self.serial.text = @"serial no"; 

} return self; 

мнение обращается в IB, и имеет соединения с этими элементами. UIView также отображается в главном xib. Он появляется, как показано в демо, с заголовками класса ItemView.

Как я уже упоминал, названия унаследованы от контроллера вида. Текст (например, @ попробовать это», не ..

Если я пытаюсь войти в текстовое поле в„методе viewForCollapseClickContentViewAtIndex“, я получаю время выполнения исключение:

2014-01-17 07:54:44.856 CollapseClickDemo[29037:70b] -[UIView item]: unrecognized selector sent to instance 0x8c84590 
2014-01-17 07:54:44.858 CollapseClickDemo[29037:70b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView item]: unrecognized selector sent to instance 0x8c84590' 
*** First throw call stack: 
(
    0 CoreFoundation      0x024531e4 __exceptionPreprocess + 180 
    1 libobjc.A.dylib      0x015808e5 objc_exception_throw + 44 
    2 CoreFoundation      0x024f0243 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275 
    3 CoreFoundation      0x0244350b ___forwarding___ + 1019 
    4 CoreFoundation      0x024430ee _CF_forwarding_prep_0 + 14 
    5 CollapseClickDemo     0x000034b8 -[ViewController viewForCollapseClickContentViewAtIndex:] + 152 
    6 CollapseClickDemo     0x0000ca89 -[CollapseClick reloadCollapseClick] + 1561 
+0

Что такое «прогоны»? Отправьте любой вывод вывода/ошибки консоли, который имеет значение. – occulus

+0

Спасибо за изменения. Я отредактировал вопрос (последнее предложение) и добавил выход журнала –

ответ

1

[self.item setText: @"try this"];

Это является причиной вашего исключения. self (который, кажется, ваш контроль) не имеет item свойство. self.item эквивалентно [self item], и поскольку нет метода с именем item, вы получаете исключение исключенного исключения.

Как только вы его заработаете, вы можете добавить его в раскадровку, добавив прокрутку в раскадровку (потому что ваш виджет является подклассом UIScrollView), а затем сменил его класс на CollapseClick. AFAIK, в настоящее время нет способа добавить пользовательские классы в список классов, поддерживаемых редактором раскадровки.

+0

Калеб, я в замешательстве. Я думал, что класс ItemView вернет UIView с именем itemView, а itemView просто имеет некоторые текстовые поля. Думаю ли я об этом неправильно? О, но спасибо за совет по использованию UIScrollviews для UIViews в раскадровки. +1 для этого. –

+0

@DavidDelMonte Трудно понять из вашего Q, к какому классу принадлежит этот метод '-loadView', но какой бы класс он ни был, он не имеет свойства' item'. Посмотрите сообщение об ошибке, которое вы получаете: * reason: '- [UIView item]: непризнанный селектор, отправленный в экземпляр 0x8c84590' *. Вы как-то отправляете сообщение «-item» на экземпляр простого старого UIView, а поскольку UIView не имеет метода '-item', вы получаете исключение. – Caleb

+0

ОК. еще раз .. У меня есть экземпляр UIView. Он содержит текстовые поля. Когда я заполняю поля, а затем регистрирую представление, он содержит текстовые поля, как ожидалось. Однако, когда я загружаю представление в контроллер вида, текстовых полей там нет. Поэтому я получаю исключение. Я не могу понять, что мне не хватает. –

Смежные вопросы