2016-05-30 3 views
2

Я следовал этот учебник, чтобы загрузить XIB при нажатии кнопки в контроллере представления: http://www.thomashanning.com/loading-a-view-from-a-xib/Swift Загрузка Вид с XIB

На этой линии:

if let customView = NSBundle.mainBundle().loadNibNamed("CustomView", owner: self, options: nil).first as? CustomView { 

Я получаю ошибку ниже: Использование незаявленных типа «» CustomView

Я следовал учебник каждый S tep несколько раз, и я не знаю, чего мне не хватает. Может ли кто-нибудь помочь с идеей о том, что может быть неправильным?

+0

Это было бы очевидно, да. Но я сделал ... – asheyla

+0

Выберите свой файл CustomView.swift и проверьте в информационной панели Xcode, что его целевое поле правильно проверено, возможно, оно не настроено правильно. – Moritz

+0

в целевом членстве это мое имя проекта и оно выбрано – asheyla

ответ

0

Спасибо всем за подробные ответы, к сожалению, никто из них не помог.

В происходящем не было ничего логичного, поскольку я не мог создавать какие-либо новые классы любого типа и вызывать их без ошибок.

Итак, после многих часов разочарования Я создал новый проект, перетащил все мои старые файлы (кроме plist), и после запуска я смог создать новые классы и создать экземпляры из них без ошибок.

1

Ошибка указывает, что вы пропустили шаг объявления класса

Use of undeclared type 'CustomView'

Одна из немногих вещей может быть пропущенный:

  1. Вы не создавали файл CustomView.swift, учебник пропустил это часть. Этот файл должен Contine следующее:

    import UIKit 
    
    class CustomView: UIView { 
        @IBAction func ButtonDidPressed(sender: AnyObject) { 
        print("Button Pressed") 
        } 
    } 
    

    соответствующая ошибка (в редакторе):

    Use of undeclared type 'CustomView'

  2. В раскадровке Identity Inspector вы не установили имя класса правильно.

    соответствующая ошибка (во время выполнения):

    Unknown class CustomView in Interface Builder file.

  3. Вашего объявление класса не совпадает с вызовом, но я думаю, вы должны быть в состоянии определить эту ситуацию в Xcode редакторе.

    Соответствующая ошибка (в редакторе):

    Use of undeclared type 'CustomView'

+1

Отличный анализ, в первый раз я решил установить владельца файла в CustomView –

+0

Благодарим вас за подробный ответ. Я прошел через все ваши точки, и никто из них не помог. Кажется, что проблема связана с созданием любого нового класса. Я не могу вызвать его экземпляр, только экземпляры старых классов, которые я создал. – asheyla

+0

Вот рабочий проект. Попробуйте и сравните. Я не пробовал и не исправлял ограничения, но в противном случае следил за учебником. link.https: //dl.dropboxusercontent.com/u/15024098/example.zip – Idan

0

Вы можете использовать этот способ дать такое же имя для класса UIView и View/.xib также

You can use this way give same name for UIView class and View/.Xib also

let alert = NSBundle.mainBundle().loadNibNamed("PromotionMenu", owner: nil, options: nil)[0] as? PromotionMenu 
     alert?.delegate = self 
     self.view.addSubview(alert!) 
Смежные вопросы