2016-12-26 12 views
0

を実行しているときにセグエのデータがSecondViewControllerクラスを認識しません追加する私の最初のビューコントローラクラスである:ここでは、だからここ

import UIKit 

class AboutUsTableViewController: UITableViewController { 

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     let volunteerPageVC = segue.destination as! DedicatedVolunteerViewController 
     // Idk why I have to use 'as!' instead of 'as'. Xcode made me do it 
     volunteerPageVC.person = "John Smith" 
    } 

} 

は私の第2のビューコントローラクラスです:私のメインストーリーボードで

import IUKit 

class DedicatedVolunteerViewController: UIViewController { 

    var person: String? 

    @IBOutlet weak var HeaderTitle: UILabel! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view. 

     HeaderTitle.text = "About " + person!; 
    } 
} 

AboutUsTableView上の各セルは、DedicatedVolunteerViewControllerに続く。私は、複数回(つまり人のプロフィール)使用できる1つのView Controllerを持つ機能が必要です。

テーブルビューのセルのいずれかにIをクリックすると、私はこれらのエラーを取得:私はアプリをコンパイルするとき、それは「不明なクラス」について言っエラーを与えないため

2016-12-26 11:44:27.075 MyApp iOS[8350:493673] Unknown class _TtC20MyApp_iOS31DedicateVolunteerViewController in Interface Builder file. 
2016-12-26 11:44:29.698 MyApp iOS[8350:493673] Unknown class _TtC20MyApp_iOS31DedicateVolunteerViewController in Interface Builder file. 

私は混乱していますまたは私がAboutUsTableViewControllerDedicatedVolunteerViewControllerを追加/インポートする必要があるというエラーがそれを使用できるようにする。私もそれをインポートしようとしましたが、Xcodeは私を許さず、私にエラーを与え続けました。

P.S.私はオンラインのほとんどの場所でswiftやobj-cの古いバージョンのドキュメントを提供しているので、新しいバージョンのコードの使い方を見つけるのは難しいと思っています。

答えて

0

ストーリーボードのシーンでクラス名が間違っているようです。テーブルビューコントローラのセグを2番目のビューコントローラに移動します。次に、デスティネーションビューコントローラのシーンを選択し、ビューコントローラ自体を選択して、「インスペクタの識別」を選択します。送り先のView Controllerのクラスを確認してください。あなたが得ているエラーから、そのクラスはDedicateVolunteerViewControllerの代わりに_TtC20MyApp_iOS31DedicateVolunteerViewControllerであると聞こえます。

0

スウィフトは本質的にヌル可能オブジェクトを意味する 'オプション'を使用します。オプションは有効な値またはゼロを持つことができます。オプションを処理するには、 'guard'ステートメントを使用することをお勧めします。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    guard let volunteerPageVC = segue.destination as? DedicatedVolunteerViewController else { 
     //Handle the nil value, log, etc 
     return 
    } 
    volunteerPageVC.person = "John Smith" 
} 

だから、あなたのprepareForSegueは次のようになります!明示的にオプションをアンラッピングしています - つまり、値がなければならないか、アプリがクラッシュすることを意味します。あなたは可能な限りそれらを使用することを避け、?上記のようにガード・ステートメントで表示されます。上記のコードでは、segue.destinationをDedicatedVolunteerViewControllerにキャストしようとしますが、そうでない場合は、ガードステートメントに入ります(つまり、結果はnilです)。

Appleのサイトには、オプションに関する多くの良い情報があります。チェックアウト:Swift Basics

具体的なエラーについては、単純な誤字のようです。エラーは 'DedicateVolunteerViewController'( 'd'がありません)を指していて、クラス名は 'DedicatedVolunteerViewController'です

関連する問題