Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios prepareForSegue发送PDF错误-无法强制转换_Ios_Uitableview_Swift_Pdf - Fatal编程技术网

Ios prepareForSegue发送PDF错误-无法强制转换

Ios prepareForSegue发送PDF错误-无法强制转换,ios,uitableview,swift,pdf,Ios,Uitableview,Swift,Pdf,我想问一下如何在tableView和webView之间正确发送PDF。 为此,我有两个字符串,其中一个是tableView中的行名称,另一个是我要传输的PDF名称 我一直在遵循教程中的各个步骤,但在prepareForSegue方法中出现了以下错误: Could not cast value of type 'UITableViewCell' (0x1079f1a18) to 'NSNumber' (0x106ab4b88). 错误在这一行: var seleccion = sender as

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

我一直在遵循教程中的各个步骤,但在
prepareForSegue
方法中出现了以下错误:

Could not cast value of type 'UITableViewCell' (0x1079f1a18) to 'NSNumber' (0x106ab4b88).
错误在这一行:

var seleccion = sender as! Int
单击
表视图中的一行时出错,因此无法显示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]


    }    

}
}

苹果表示:

发送方:启动序列的对象。您可以使用此参数根据启动segue的控件(或其他对象)执行不同的操作


segue可以从多个源触发,因此请使用segue和sender参数中的信息来消除应用程序中不同逻辑路径之间的歧义。例如,如果segue来自表视图,那么sender参数将标识用户单击的单元格。您可以使用该信息设置目标视图控制器上的数据

您的问题是,
发件人
没有用于您想要的内容。但是如果在
didSelectRowAtIndexPath.row
中有一个全局变量
pdfSeleccionado
,您可以使用它来尝试在
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]
    }
}
我希望这对你有所帮助。

据苹果公司称:

发送方:启动序列的对象。您可以使用此参数根据启动segue的控件(或其他对象)执行不同的操作


segue可以从多个源触发,因此请使用segue和sender参数中的信息来消除应用程序中不同逻辑路径之间的歧义。例如,如果segue来自表视图,那么sender参数将标识用户单击的单元格。您可以使用该信息设置目标视图控制器上的数据

您的问题是,
发件人
没有用于您想要的内容。但是如果在
didSelectRowAtIndexPath.row
中有一个全局变量
pdfSeleccionado
,您可以使用它来尝试在
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]
    }
}


我希望这对您有所帮助。

为什么不使用全局变量
pdfSeleccionado
而不是在
prepareForSegue
中传递索引?感谢您回答bro。这是因为我需要更多的时间来练习和理解XCode是如何工作的。但是,为什么不使用全局变量
pdfSeleccionado
而不是在
prepareForSegue
中传递索引,这只是时间问题。感谢您回答bro。这是因为我需要更多的时间来练习和理解XCode是如何工作的。但是,为什么不使用全局变量
pdfSeleccionado
而不是在
prepareForSegue
中传递索引,这只是时间问题。感谢您回答bro。这是因为我需要更多的时间来练习和理解XCode是如何工作的。但这只是时间问题,它帮助很大!!感谢您,现在在函数mostrarpdf()的webView(类)中发布了一个新错误{错误看起来是这样的:jobs1.pdf致命错误:在打开可选值时意外发现nil确定如果答案解决了您的问题没有问题,请接受它。这可能对另一个问题有帮助。完成了,兄弟。根据新错误,您能给我一些帮助吗?方法中打印了什么?帮助很大!!感谢出现新错误在webView(类)中的函数mostrarpdf()中发布{错误看起来是这样的:jobs1.pdf致命错误:在打开可选值时意外发现nil确定如果答案解决了您的问题没有问题,请接受它。这可能对另一个问题有帮助。完成了,兄弟。根据新错误,您能给我一些帮助吗?方法中打印了什么?帮助很大!!感谢出现新错误在webView(类)中的函数mostrarpdf()中发布{错误看起来像这样:jobs1.pdf致命错误:在打开可选值时意外发现nil确定没有问题如果答案解决了您的问题,请接受它。这可能对另一个问题有帮助。完成了兄弟。您能根据新错误给我一些帮助吗?方法中打印了什么?