2016-10-10 4 views
-1

EDIT - これは重複していません。すべての接続が正しく行われた後でも、私はまだこのエラーを受けています。この問題を解決するためのアクションは、明らかに特定の順序で完了する必要がありました。答えとしてマークされた回答を参照してください。このクラスはキーのキー値に符合しません(ストーリーボードでファイル名を変更しました)

ストーリーボードでファイル名が変更され、すべてが破損しました。私はエラーを取得しています "このクラスは、キーのコードに準拠したキー値ではありません"しかし、私は実際には問題とは思わない。私はDraftという名前のビューコントローラとDraft2という別のビューコントローラを持っています。私のストーリーボードでは、ファイル名を「ドラフト」から「ドラフト3」に変更し、次に「ドラフト2」を「ドラフト」に変更しました。私はクラスの名前をそれぞれ変更してから、セグを削除して再作成しました。また、View Controller TitleとStoryboard Idをそれぞれ変更しました。私はDraft3を本当に気にしません。なぜなら、それは最終的には削除されますが、私はDraft(新しいバージョン)が必要です。

Draftという名前の新しいViewcontrollerのすべてのコンセントを再接続しました。私はまた、プログラムを掃除しようとしました(cmd + shift + k)。私は貯蓄と閉鎖を試みました。

ここでは何が起こっていますか?

これはViewControllerを

class Draft: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, UISearchBarDelegate { 


@IBOutlet weak var battlegroundName: UILabel! 
@IBOutlet weak var draftStatus: UILabel! 
@IBOutlet weak var draftNotes: UILabel! 

@IBOutlet weak var collectionHeroPool: UICollectionView! 
@IBOutlet weak var collectionTeam1Bans: UICollectionView! 
@IBOutlet weak var collectionTeam2Bans: UICollectionView! 
@IBOutlet weak var collectionTeam1Picks: UICollectionView! 
@IBOutlet weak var collectionTeam2Picks: UICollectionView! 

@IBAction func undoButton(sender: AnyObject) { 
    self.navigationController?.popViewControllerAnimated(true) 
    self.navigationController?.navigationBarHidden = false 
    //dismissViewControllerAnimated(false, completion: nil) 
} 

var team1First = true 
var battleground: Battleground! 
var team1 = [Hero]() 
var team2 = [Hero]() 
var turn = 1 
var team1Active = true 
var activeTeam = [Hero]() 

var team1Bans = [Int: Hero]() 
var team2Bans = [Int: Hero]() 
var team1Picks = [Int: Hero]() 
var team2Picks = [Int: Hero]() 
var bans1 = [1,9] 
var bans2 = [2,8] 
var picks1 = [3, 6, 7, 12, 13] 
var picks2 = [4, 5, 10, 11, 14] 
var pickedHeroes = [Hero]() 




override func viewDidLoad() { 
    super.viewDidLoad() 


    let value = UIInterfaceOrientation.LandscapeLeft.rawValue 
    UIDevice.currentDevice().setValue(value, forKey: "orientation") 
    self.navigationController?.navigationBarHidden = true 

    battlegroundName.text = battleground.name 

このコードは

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

    if segue.identifier == "preDraftToDraft3" {// if this is the segue being loaded with this identifier 
     if let detailsVC = segue.destinationViewController as? Draft3 { // grab the view control we will go to and cast it as the hero detail class 
       detailsVC.team1First = team1First! 
       //print(selectedMap!.name) 
       detailsVC.battleground = selectedMap 
       //print(detailsVC.battleground.name) 
     } 
    } 
    if segue.identifier == "preDraftToDraft" {// if this is the segue being loaded with this identifier 
     if let detailsVC = segue.destinationViewController as? Draft { // grab the view control we will go to and cast it as the hero detail class 
      detailsVC.team1First = team1First! 
      //print(selectedMap!.name) 
      detailsVC.battleground = selectedMap 
      //print(detailsVC.battleground.name) 
     } 
    } 
} 
@IBAction func startDraft(sender: AnyObject) { 
    if team1First != nil && selectedMap != nil { 
     performSegueWithIdentifier("preDraftToDraft", sender: nil) 
    } 
} 

答えて

1

実際にあなたがすべての権利のアクションを実行しましたが、間違った順序で。 以下の手順を実行する必要があります。 -

  1. まず、すべてのIBOutlets、IBActions、およびSeguesを削除します。
  2. 次に、ViewControllerソースファイルのクラス名を変更します。
  3. 次に、ViewControllerシーンのStoryboardでクラス名を変更します。
  4. ここで、Segues、IBOutlets、IBActionsを接続します。
  5. 清潔で、ビルドして実行します。それはうまくいくはずです。

乾杯!

+0

これはうまくいきました。私は「必要な」注文があるとは決して考えなかったでしょう。 – Apple

0

問題はストーリーボードでの店舗の一つができないことであるドラフトするsegues私predraftである私のドラフトの一部です。クラス自体にあります。 ストーリーボードビューコントローラの「アウトレットの参照」セクションにあるように、クラスに同じ名前のIBOutletがあることを確認します。例えば

enter image description here

あなたがそこに「ボタン」を持っている場合は、ビューコントローラにこのラインを持っている必要がありますが:

@IBOutlet weak var button: UIButton! 
関連する問題