2016-12-26 4 views
0

Я делаю пользовательские рамки и ресурсы для пакетов этим tutorial.Почему моя раскадровка не работает из пользовательских ресурсов пакета при подключении IBOutlet или IBAction?

Есть раскадровка (ViewController внутри) и изображение в ресурсах связки.

Я представляю ViewController, затем сбой, если я подключил любые IBOutlet или IBAction. Я уверен, что каждое соединение UI объекта в порядке.

Я попытался использовать xib, и он отлично работал.

Здесь журнал ошибок:

* Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key goButton.' * First throw call stack: (0x244a391b 0x23c3ee17 0x244a3629 0x24c171f3 0x28d828b7 0x24c296d3 0x28ed3e9b 0x243ed1cb 0x28ed2bd1 0x28d85aa3 0x28b58ffb 0x28a1ea1f 0x28a1e971 0x292b3ec1 0x28d6ad01 0x28d8e6e5 0x28d90d25 0x28d90f91 0x28b17db9 0xd0b5 0x28a3714b 0x28aa7193 0x28aa7129 0x28cc75b1 0x28cd37db 0x24465d21 0x244657dd 0x24463d51 0x243b3229 0x243b3015 0x259a3ac9 0x28a87189 0xd2ed 0x2405b873) libc++abi.dylib: terminating with uncaught exception of type NSException

Существует предупреждение перед ошибкой:

Unknown class TestViewController in Interface Builder file.

Вот код, я представляю ViewController из stroyboard в пачке ресурсов.

NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"XXXSDK" ofType:@"bundle"]; 
NSBundle *resourcesBundle = [NSBundle bundleWithPath:bundlePath]; 

UIStoryboard *resourcesStoryboard = [UIStoryboard storyboardWithName:@"Resources" bundle:resourcesBundle]; 
TestViewController *testVC = [resourcesStoryboard instantiateViewControllerWithIdentifier:@"TestViewController"]; 

[self presentViewController:testVC animated:YES completion:nil]; 

ответ

3

Что касается предупреждения вы получили:

Unknown class TestViewController in Interface Builder file.

Есть две возможности:

  1. Кажется, что вы не указали класс в свой NIB/Storyboard ViewController. Пожалуйста, проверьте проблему.
  2. У вас есть файл TestViewController.h и TestViewController.m, который был добавлен в ваш проект. Но как-то ваши файлы могут быть удалены из него из Finder.
    Если это так, вы можете увидеть оба файла в ProjectNavigator xCode в своем проекте с RED цвет текста. Это означает, что компилятор файлов, который, как ожидается, не будет добавлен в ваш проект.

Теперь, если вы обнаружите, что вы столкнулись второй сценарий затем перейти в корзину, выберите файлы, щелкните правой кнопкой мыши и выберите Возвратить.
Затем перейдите в проект xCode, щелкните правой кнопкой мыши по имени вашего проекта и выберите Добавить файл в «Ваше имя проекта».
Я надеюсь, что это решит вашу проблему.

+0

1. Я уверен, что TestViewController.h и .m будут упакованы в рамки. – ovo

+0

, но спасибо вашему ответу – ovo

+0

Вы можете попробовать решение по адресу http://stackoverflow.com/questions/1725881/unknown-class-myclass-in-interface-builder-file-error-at-runtime/1725893#1725893 –

0

Из этого утверждения: этот класс не является значением ключа кодирования совместимый для ключа goButton убедитесь, что ваш goButton в классе правильно. Проверьте свой контроллер просмотра раскадровки, независимо от того, связан ли он с соответствующим классом или нет.

Возможно, у вас плохое соединение в вашем xib.

У меня была эта ошибка много раз. Другой распространенной причиной является изменение имени свойства IBOutlet в вашем .h/.m, которое вы уже подключили к владельцу файла в nib.

Из вашего пера:

Выберите объект в IB и перейдите в 'Connections Inspector'. В разделе «Реферирование выходных данных» убедитесь, что ваш объект еще не подключен к старому имени свойства ... если он есть, щелкните маленький «x», чтобы удалить ссылку и снова создать.

enter image description here

Еще одна распространенная причина, если вы используете раскадровки, ваш UIButton может иметь более одного assignings (раствор почти такой же, как и для СИБ):

Откройте раскадровку и щелкните правой кнопкой по UIButton Вы увидите, что для этой кнопки имеется несколько назначений/ссылок. Удалите один из "Main ..." неактивна окна с небольшой "х":

enter image description here

+0

благодарите ваш ответ, но я проверил все, что все в порядке. – ovo

1

thank @Er. Ответ Вихара.

Решение моей проблемы, чтобы добавить флаги -all_load -ObjC в Other Linker Flags.

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