2016-11-11 19 views
0

マップビューでどのピンが選択されているかに基づいて、特定の画像とテキストファイルを2番目のビューコントローラに取り込もうとしています。現在、私は自分のタイトルをセグに転送しています。私の考えは、タイトルが見つかったときに正しく選択されるように、テキストファイルとイメージをタイトルと同じ名前にすることでした。テキストと画像のインポートswiftマップキット

EG:title = big ben:title = "big ben"したがって画像を選択title.pngとtitle.txt イメージとテキストファイルを選択するにはswiftにどのように伝えるのかが分かりませんassetsフォルダから削除します。

私は現在、セグエを持っているし、として実装セグエの準備:どのように私は資産フォルダから引っ張って迅速な取得することができます

@IBOutlet weak var art_image: UIImageView! 

@IBOutlet weak var art_desc: UITextView! 

@IBOutlet weak var art_title: UILabel! 
var artworkPin: Artwork! 



override func viewDidLoad() { 
    super.viewDidLoad() 
    art_title.text = artworkPin.title 




} 

:として

func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) { 
    if control == view.rightCalloutAccessoryView { 
     if let artworkPin = view.annotation as? Artwork { 
      performSegue(withIdentifier: "no", sender: artworkPin) 
     } 
    } 
} 

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if let identifier = segue.identifier { 
     if identifier == "no" { 
      if let artworkPin = sender as? Artwork { 
       let ViewTwo = segue.destination as! ViewTwo 
       ViewTwo.artworkPin = artworkPin 
      } 
     } 
    } 
} 

} 

と私の2番目のビュークラス? 私は以下の私の完全なコード添付した: ViewControllerOne

ViewTwo

答えて

1
XCAssetsにおける非画像ファイルを保存するとき、あなたはそれらのコンテンツacccessするNSDataAssetを使用する必要があります

参考:https://developer.apple.com/library/ios/documentation/UIKit/Reference/NSDataAsset_Class/

func readBundle(file:String) -> String 
{ 
    var res = "" 
    if let asset = NSDataAsset(name: file) , let string = String(data:asset.data, encoding: String.Encoding.utf8){ 
     res = string 
    } 
    return res 
} 

第2のビューコントローラでイメージをロードするには

@IBOutlet weak var art_image: UIImageView! 

@IBOutlet weak var art_desc: UITextView! 

@IBOutlet weak var art_title: UILabel! 
var artworkPin: Artwork! 



override func viewDidLoad() { 
    super.viewDidLoad() 
    art_title.text = readBundle(artworkPin.title) 
art_image.image = UIImage(named:"PinSample") 

} 

:コード内のアセット画像の名前と名前が同じでなければならない

+0

I readBundle有する未解決の識別子エラーIをインポートする必要がモジュールの一部ですか?また、私はそれを名前として提示する必要がありますか: "文字列"私は名前をつけることができますか:titleそれはタイトル(それはart_title.textのインポートされたテキストである)ですが、そのタイトルのファイルを開きます。そうでなければ、ピン1の画像がどのタイトルとピンにクリックされても、「ピン1」と言われたら、ロードされます。これはあなたが私に知らせることに意味がない場合、私は再び説明しようとします。 –

+0

バンプ........ –

+0

タイトルが同じであればイメージ名として使用できます – Vinodh