gpt4 book ai didi

ios - prepareForSegue 发送 Pdfs 错误 - 无法转换

转载 作者:行者123 更新时间:2023-11-28 09:06:29 24 4
gpt4 key购买 nike

我想问一下如何在 tableView 和 webView 之间正确发送 pdf。为此,我有 2 个字符串,其中包含 tableView 中的行名称,另一个字符串包含我想要传输的 pdf 的名称

我一直在按照教程中的相应步骤进行操作,但是我在 prepareForSegue 方法中遇到了这个错误:

Could not cast value of type 'UITableViewCell' (0x1079f1a18) to 'NSNumber' (0x106ab4b88).

错误在这一行:

var seleccion = sender as! Int

当我点击 tableView 中的一行时出现错误,因此无法显示 pdf

我的代码:

class PersonajesHistoricosViewController: UIViewController {


var arregloPdfs = ["jobs1.pdf" , "disney1.pdf","jobs1.pdf"]

var arregloGanadores : [String] = [String]()
var pdfSeleccionado:Int = 0


override func viewDidLoad() {
super.viewDidLoad()

arregloGanadores = ["Steve Jobs" , "Walt Disney" , "Arnold Schwarzenegger"]



}


//****************TABLE VIEW*************************
func numberOfSectionsInTableView(tableView: UITableView) -> Int
{
return 1
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{

//make sure you use the relevant array sizes
return arregloGanadores.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
var cell :UITableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell") as! UITableViewCell
//Aqui podria hacer referencia a otro array con nombres en especifico para cada uno de los pdfs
cell.textLabel?.text = self.arregloGanadores[indexPath.row]
cell.imageView?.image = UIImage(named:"Libro.jpg")

return cell
}


func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)

pdfSeleccionado = indexPath.row

self.performSegueWithIdentifier("haciaVisorPdf", sender: pdfSeleccionado)


}



//Por si quiere cambiar el ancho de cada renglon o celda
// func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
//
// return 150
// }

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
// HERE IS THE ERROR
var seleccion = sender as! Int


if segue.identifier == "haciaVisorPdf"
{


var visorPdf: WebView = segue.destinationViewController as! WebView

visorPdf.nombreArchivo = self.arregloPdfs[seleccion]


}

}
}

import UIKit

class WebView: UIViewController {

@IBOutlet weak var webView: UIWebView!

var nombreArchivo:String = ""


override func viewDidLoad() {
super.viewDidLoad()


println("\(nombreArchivo)")


zoom()
mostrarPdf()

}

func zoom () {

webView.scalesPageToFit = true


}


func mostrarPdf(){


//Paso 1 : conseguir direccion en tu bundle de tu archivo pdf
var direccionPdf = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(nombreArchivo, ofType: "pdf")!)

println(direccionPdf)

if let pdfData = NSData(contentsOfURL: direccionPdf!) {

cargarDatos(pdfData)


}

else {

}

}

func cargarDatos(datosDePdf:NSData) {


self.webView.loadData(datosDePdf, MIMEType: "application/pdf", textEncodingName: "utf-8", baseURL: nil)


}
}

最佳答案

根据 Apple 的说法:

sender: The object that initiated the segue. You might use this parameter to perform different actions based on which control (or other object) initiated the segue.


Segues can be triggered from multiple sources, so use the information in the segue and sender parameters to disambiguate between different logical paths in your app. For example, if the segue originated from a table view, the sender parameter would identify the cell that the user clicked. You could use that information to set the data on the destination view controller.

你的问题是 sender不用于您想要的。但是你有一个全局变量 pdfSeleccionadodidSelectRowAtIndexPath用你的indexPath.row ,您可以改用它来尝试在 prepareForSegue 中传递它, 因为您首先输入 didSelectRowAtIndexPath然后手动执行 segue,如下所示:

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

if segue.identifier == "haciaVisorPdf" {
var visorPdf: WebView = segue.destinationViewController as! WebView
visorPdf.nombreArchivo = self.arregloPdfs[pdfSeleccionado]
}
}

希望对你有帮助

关于ios - prepareForSegue 发送 Pdfs 错误 - 无法转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30574131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com