2016-04-12 13 views
0

「イベント」テーブルビューの選択したセルから「詳細」ビューコントローラにデータを渡そうとしています。私は私のようなさまざまな質問を見てきましたが、私のコードに正しく適用できないようです。私はまた、字幕スタイルの代わりにラベルを使用しました。また、渡す必要のある画像もあります。TableViewCellラベルからViewControllerにデータを渡す際の問題

私のビューコントローラは、次のようになります

import UIKit 

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { 

    var names = ["Brown Diner", "Kirkland", "Choco", "Lil Wayne", "Annie", "Social"] 
    var details = ["Free drink with meal after 12 AM", "LADIES drink free", "10% off all ice cream!", "concert", "a Theater Production", "Bring your Squad to the Social"] 
    var images = [UIImage(named: "brown"), UIImage(named: "kirk"), UIImage(named: "choco"), UIImage(named: "lilwayne"), UIImage(named: "default"), UIImage(named: "default")] 

    override func viewDidLoad() { 
    super.viewDidLoad() 
    } 


    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = self.tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! CustomCell 
     cell.name.text = names[indexPath.row] 
     cell.detail.text = details[indexPath.row] 
     cell.photo.image = images[indexPath.row] 
     return cell 
    } 

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

     if segue.identifier == "detailsSegue" { 
      guard let eventVC = segue.destinationViewController as? DetailsViewController, 
       let eventIndex = tableView.indexPathForSelectedRow?.row else { 
        return 
      } 
      eventVC.eventName = names[eventIndex] 
      eventVC.eventDetail = details[eventIndex] 
      eventVC.eventPhoto = images[eventIndex] 
     } 
    } 
} 

私customCell.swiftファイル:

import UIKit 

class CustomCell: UITableViewCell { 

    @IBOutlet var photo: UIImageView! 
    @IBOutlet var name: UILabel! 
    @IBOutlet var detail: UILabel! 

    override func awakeFromNib() { 
     super.awakeFromNib() 
     // Initialization code 
    } 

    override func setSelected(selected: Bool, animated: Bool) { 
     super.setSelected(selected, animated: animated) 

     // Configure the view for the selected state 
    } 

} 

私detailsViewController

import Foundation 
import UIKit 

class DetailsViewController : UIViewController { 

    @IBOutlet var detailsLabel: UILabel! 
    @IBOutlet var detailsImage: UIImageView! 
    @IBOutlet var detailsDesc: UILabel! 

    override func viewDidLoad() { 

    } 
} 

私はスウィフトに非常に新しいです、そしてそれが持っています私のために非常に挑戦的であることが証明された。私は実際にコーダーではありませんが、プロジェクトの要件は、私がUI/UIXデザイナーであるアプリケーションのコーディングのいくつかを完了することです。ご協力いただきありがとうございます。

EDIT :: プロジェクト:https://github.com/vpags1/events.git

ユーザーがTableView内のセルをクリックすると、セルと同じデータ(イメージ、名前、詳細)だけが表示される詳細ビューに移動します。より長い記述は全長で見ることができます。 View Controllerでいくつかのエラーが発生しています。私のセルの書式設定も面倒ですが、そのための迅速な修正がない限り、この後に試してみる予定です。乾杯。

+0

すべてが機能しているようです。あなたはもう少し問題を指定できますか? Btw。 tableViewの値が 'DetailsViewController.viewDidLoad'に存在すると予想される場合、このメソッドは** prepareForSegue'の前に**呼び出されるため、機能しません。しかし、あなたは 'viewWillAppear'でそれらを見ることができます。 – Lasse

+0

ユーザーがtableViewCellをタップするとデータを渡そうとしていますか? –

+0

あなたのプロジェクトをギブスに置き、リンクを提供してください –

答えて

0

セルをタップしたときにprepareForSegue関数が呼び出されているように見えません。そうでない場合は、didSelectRow関数を追加できます。これを試してください:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

       self.performSegueWithIdentifier("detailsSegue", sender: self) 

    } 

次に、あなたのセルを選択すると、prepareForSegue関数が呼び出されます。

関連する問題