【问题标题】:Importing text and images swift Map Kit导入文本和图像 swift Map Kit
【发布时间】:2016-11-11 02:47:00
【问题描述】:

我正在尝试根据在我的地图视图中选择的引脚来将特定的图像和文本文件嵌入到我的第二个视图控制器中。目前,我的头衔正在通过 segue 转移。我的想法是将文本文件和图像命名为与标题相同的名称,以便在找到标题时正确选择它们。

EG: Title = big ben : title = "big ben" 因此选择图片 title.png 和 title.txt 但是我无法实现这一点,因为我不确定如何告诉 swift 从资产文件夹中选择图像和文本文件。

我目前有 segue 并准备 segue 实现为:

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
            }
        }
    }
}

}

我的第二个视图类为:

@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




}

如何快速从资产文件夹中提取? 我在下面附上了我的完整代码: ViewControllerOne

ViewTwo

【问题讨论】:

    标签: ios swift mapkit assets


    【解决方案1】:

    当在 XCAssets 中存储非图像文件时,你应该使用 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
    }
    

    在第二个视图控制器中加载图像

    @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")
    
    }
    

    注意:资产图片名称和代码中的名称要一致

    【讨论】:

    • 我有一个未解决的标识符错误,readBundle 是我需要导入的模块的一部分吗?我还必须将其显示为命名:“字符串”吗?我可以命名:标题吗?所以无论标题是什么(即 art_title.text 的导入文本),它都会打开一个名为该标题的文件。否则,如果我说“Pin 1”,无论单击什么标题和 pin,都会加载 Pin 1 的图像。如果这对您没有意义,请告诉我,我会再次尝试解释。
    • 如果两者相同,则可以使用标题作为图像名称
    • 有没有办法在一个图像视图中做多个图像?没有动画,只有导航控件,比如谷歌地图提供的三个气泡?
    • 尝试使用页面控件查看图像
    • 啊,我知道我可以将named:"folder" 引用到一个文件夹并从那里收集图像吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2022-07-04
    • 2011-11-17
    • 2020-09-28
    • 2016-10-20
    • 1970-01-01
    相关资源
    最近更新 更多