2017-02-13 2 views
0

すべてはここでは機能しますが、私の質問は私が押した別のセルで異なる情報にアクセスしようとしていることです。たとえば、次のようにTableViewCellは異なる詳細のシングルビューコントローラにつながりますSWIFT

あなたが含まれている最初のテーブルビューセルに押した場合:

- を押すと画像の名前

を含む情報で> 2つ目のビュー

- > 2番目のビューには、BIが含まれていますCイメージC

の名前を含む情報で> 2番目のビュー -

C:あなたが含まれている3番目のテーブルビューのセルに押すとBのと名前に

をMAGE

私のFirstViewControllerで、&のinformationArrayは、SecondViewControllerのこれらの情報にアクセスしようとしているため、クラス外にあることに気付いた場合。しかし、あなたが好奇心が強い場合に備えて、それはまったく問題ではありません。私が試みた


もの:

  • Iは、異なるビューコントローラに手動で各情報を足す試みたがしかし、私は、ある情報を持っているので、そのアプリのサイズを増加させるであろう気付きますこれは100以上のビューコントローラを作成することを意味します。また

    右ここで第2のビューコントローラから配列、および行うための最善の方法は何かいる私の避難所のフィギュアうち、押されたセルのいずれかですべてを示すでその結果を呼び出してみました
  • をセグエを使用することを含みます。

  • お試し版googling & youtubing & stackoverflowまだ誰も助けが見つかりませんでしたので、私はこれを投稿することにしました。私はあなたが知っているいくつかの助け/技術はそのI異なるtableviewcellで、への道を見つけ出すために私を助けることができるようにしません

    上に書いたとおり、:

MyStruggleまたは私は何を達成したいですそれぞれの配列に格納されている情報を表示します。

気付いた場合は、複数のView Controllerの代わりに1つのView Controllerを使用しようとしています。

FirstViewController。迅速

struct information { 
    var name: [String]! 
    var image: [UIImage]! 
init(named: [String], imaged: [UIImage]){ 
name = named 
image = imaged 
} 
    } 

var informationArray = [information]() 

class TableViewController: UITableViewController { 

override func viewDidLoad(){ 
informationArray = [information(name: ["A","B","C"], 
        image: [UIImage(named: "A"),UIImage(named:"B"),UIImage(named: "C")] 

    } 

} 

SecondViewController.swift

class SecondViewController: UITableViewController { 
    @IBOutlet weak var Image: UIImageView! 
    @IBOutlet weak var Name: UITextField! 



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

答えて

0

のUITableViewは、あなたがやろうとしている正確に何を達成を助けるために自由のためのいくつかの組み込みメソッドが付属しています。ここではいくつかの概念を説明するチュートリアルです:

http://www.codingexplorer.com/segue-uitableviewcell-taps-swift/

これは、第2のビューコントローラにセグエを設定し、表示したいデータを渡す方法について説明します。

高ポイントの概要:あなたは表示に必要なデータを保存するために、あなたのsecondVCでプロパティを作成する必要があります

:あなたが設定することができ

class SecondViewController: UITableViewController { 
@IBOutlet weak var Image: UIImageView! 
@IBOutlet weak var Name: UITextField! 
var information: Information? 

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

}

最初のviewControllerのプロトタイプテーブルセルから2番目のviewControllerまでのストーリーボードの「表示」セグを表示します。 segueの識別子を設定します: "SecondViewController"。あなたがのtableViewのセルに押すと、それは第二のViewControllerを表示するセグエをトリガし、準備(セグエについて:_、)を呼び出します機能:上記のチュートリアルを

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "SecondViewController" { 
     if let indexPath = self.tableview.indexPathForSelectedRow { 
      let information = self.datasource[indexPath.row] 
      if let secondVC = (segue.destination as? SecondViewController) { 
       secondVC.information = info 
      } 
     } 
    } 
} 

が作業を、それはあなたがしようとしていることを設定することができるはずです。あなたはまた、残りの質問の答えを見つける場所を学びます。

関連する問題