2016-07-18 14 views
1

私はコードの初心者ですが、実際には数週間前にこの世界に参加しました。 私はXcodeとSwiftを使ってIos用の最初のアプリケーションを構築しようとしています。 異なるテーブルビューを作成し、これらのテーブル間でデータを渡したいとします。構造体と配列を使用してテーブルビュー間でデータを渡す(Swift:Xcode)

今、コードを作成しましたが、私は "Expected Declaration"エラーを受けています。私は本当にそれを修正する方法を理解していません。誰か助けてくれますか?おかげさまで

// 
// ViewController.swift 
// Tot_Forum 
// 
// Created by Fausto Saltetti on 18/07/16. 
// Copyright (c) 2016 Fausto Saltetti. All rights reserved. 
// 

import UIKit 

class FirtTableViewController: UITableViewController { 

var FirstTableArray = [String]() 

var SecondArray = [SecondTable]() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    FirstTableArray = ["Focus on learning", "Participate and network", "Access and build knowledge", "Assess, reflect, evaluate", "Inspire and generate ideas", "Problem solve and plan", "Map ideas and relationships"] 

    SecondArray = 
     [SecondTable(SecondTitle: ["After Action Review","Audience Response Systems","Blogs","Case Studies", "Discussion Forums UPDATE","Jigsaw","Peer Assist", "Podcasting","Presentations", "Role Play", "Screencasting", "Social Networking", "Sociometrics"]), 
      SecondTable(SecondTitle: ["After Action Review","Audience Response Systems","Blogs","Case Studies", "Discussion Forums UPDATE","Jigsaw","Peer Assist", "Podcasting","Presentations", "Role Play", "Screencasting", "Social Networking", "Sociometrics"]), 
      SecondTable(SecondTitle: ["After Action Review","Audience Response Systems","Blogs","Case Studies", "Discussion Forums UPDATE","Jigsaw","Peer Assist", "Podcasting","Presentations", "Role Play", "Screencasting", "Social Networking", "Sociometrics"])] 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    { 
    return FirstTableArray.count 
} 

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    var Cell = self.tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell 

    Cell.textLabel?.text = FirstTableArray[indexPath.row] 

    return Cell 

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

     var indexPath : NSIndexPath = self.tableView.indexPathForSelectedRow()! 

     var DestViewController = segue.destinationViewController as! SecondTableViewController 

     var SecondTableArrayTwo : SecondTable 

     SecondTableArrayTwo = SecondArray[indexPath.row] 

     DestViewController.SecondArray = SecondTableArrayTwo.SecondTitle 
     } 

} **//Error here: !Expected declaration** 
+0

閉じ括弧は、「}」あなたのクラスの –

答えて

1

間違いはここcellForRowAtIndexPath機能の中にあなたprepareForSegue機能です。

彼らはグローバルスコープ

のvar SecondTableArrayTwoにする必要があります:SecondTable?ラップしないか、initをオプションにする必要があります。あなたが取得しているエラーを皮切り

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    var Cell = self.tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell 
    Cell.textLabel?.text = FirstTableArray[indexPath.row] 
    return Cell 
} 

func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     var indexPath : NSIndexPath = self.tableView.indexPathForSelectedRow()! 
     var DestViewController = segue.destinationViewController as! SecondTableViewController 
     var SecondTableArrayTwo : SecondTable? 
     SecondTableArrayTwo = SecondArray[indexPath.row] 
     DestViewController.SecondArray = SecondTableArrayTwo!.SecondTitle 
} 
+0

感謝が不足している、これらは本当に便利です。 –

+0

正しいコードを書いて、もう少し手伝ってもらえますか?またはあなたがタイプしたものです、私はコピーして過去ですが、それは私に同じ間違いを示しています。 –

1

、「期待宣言」エラーがあなたのクラスの行方不明中括弧「}」のためです。

returnステートメントの後に記述されたコードは決して実行されないため、このエラーを解決すると別の警告が表示されます。あなたはreturn文の後にprepareForSegue関数を書いています。

ここで、主な問題は、prepareForSegueはグローバルスコープである必要があります。 @ÖzgürErsilが答えました。したがって、あなたのクラスのための閉じ括弧を追加します。 cellForRowAtIndexPath関数からprepareForSegue関数を削除し、クラス内のグローバルスコープに書き込みます。これはあなたを助ける

希望:)

関連する問題