2017-08-08 8 views
0

これは私を困惑させ、Iveはチュートリアルとスタック回答のいくつかの方法を試しましたが、それでもまだビルドしていませんでした。テーブルビューsegueで別個のビューに

だから、基本的には:

  • Imはコアデータを取得して、配列にそれを置きます。ユーザーは、私がどこにその見るためにいくつかのprint文を置いているathleteDetalView

を見るために、セルをタップするだけで

  • (正常に動作)細胞内の最初と最後の名前が表示されているイム後
  • (正常に動作します)間違っている。

    ありがとうございます。入力いただきありがとうございます。

    import UIKit 
    import CoreData 
    
    class athleteViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 
    
    //labels 
    @IBOutlet weak var athleteLabel: UILabel! 
    
    //buttons 
    @IBOutlet weak var athleteCreate: UIBarButtonItem! 
    
    @IBOutlet weak var athleteTableView: UITableView! 
    
    var athleteArray:[Athlete] = [] 
    var myIndex = 0 
    
    
    override func viewDidLoad() { 
        super.viewDidLoad() 
    
        athleteTableView.delegate = self 
        athleteTableView.dataSource = self 
    
        self.fetchData() 
        self.athleteTableView.reloadData() 
    
    } 
    
    
    func numberOfSections(in tableView: UITableView) -> Int { 
        return 1 
    } 
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
        return athleteArray.count 
    } 
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
        let cell = tableView.dequeueReusableCell(withIdentifier: "athleteName", for: indexPath) 
        let name = athleteArray[indexPath.row] 
        cell.textLabel!.text = name.firstName! + " " + name.lastName! 
    
        let athleteName = name.firstName! 
        let lastName = name.lastName! 
        let age = name.age! 
        let sport = name.sport! 
        let email = name.email! 
    
        print(athleteName) 
        print(lastName) 
        print(age) 
        print(sport) 
        print(email) 
    
        return cell 
    } 
    
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
        myIndex = indexPath.row 
        let currentCell 
    
    
    
        //let storyboard = UIStoryboard(name: "Main", bundle: nil) 
        //let destination = storyboard.instantiateViewController(withIdentifier: "athleteDetailsViewController") as! athleteDetailsViewController 
    
        //let athName = athleteArray[myIndex] 
    
        //testdata 
    
    
        //test data 
    
    
        performSegue(withIdentifier: "athleteDetailsSegue", sender: self) 
    
    
    
        //self.navigationController?.pushViewController(destination, animated: true) 
    
    
    } 
    
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    
        if (segue.identifier == "athleteDetailsSegue") { 
         var destination = segue.destination as! athleteDetailsViewController 
    
         destination.firstNameString = athleteName 
         destination.lastNameString = lastName 
         destination.ageString = age 
         destination.sportString = sport 
         destination.emailString = email 
         //destination.getImage = name.image 
        } 
    
    
    
    } 
    
    
    
    func fetchData(){ 
    
        let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext 
    
        do{ 
         athleteArray = try context.fetch(Athlete.fetchRequest()) 
        } 
        catch{ 
         print(error) 
        } 
    } 
    
  • +0

    実際の問題は何ですか?あなたはこのコードはビルドされていないと言いますが、デバッグのためにprintステートメントを置くと言うので、コンパイルエラーやランタイムエラーが発生するのですか、エラーはまったくありませんか? –

    +0

    主に、データが実際に変数にロードされているかどうかを確認するためにprintステートメントを使用しました。ただし、他のビューにそれらを送信しません。 Iveはやってみました: let currentCell = tableView.cellForRow(at:indexPath)! UITableViewCellとして それから私が渡したい変数はここで議論したことに従います [link](https://stackoverflow.com/questions/28430663/send-data-from-tableview-to-detailview-swift) –

    答えて

    0

    あなたがのtableViewに設定されている変数:cellForRowAt:indexPathは:ローカル変数であり、機能prepareForSegue:では使用できません。一番上の変数をクラスのプロパティとして宣言してみてください。

    関連する問題