您好,我正在创建变量URL,但在此行出现错误。
这是我的完整代码。
“在Swift中使用未解析的标识符'indexPath'”
import UIKit
import MediaPlayer
class DetailViewController: UIViewController{
var moviePlayer:MPMoviePlayerController!
var color = UIColor.whiteColor()
var name = NSString()
var arrayOfPrograms: NSArray = []
var url = NSString()
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.titleTextAttributes =
[NSFontAttributeName: UIFont(name: "HelveticaNeue-Light", size: 20)!,
NSForegroundColorAttributeName: UIColor.whiteColor()]
self.navigationController?.navigationBar.tintColor = color
self.navigationItem.title = "TV JOJ"
var url = NSURL(string: (self.arrayOfPrograms.objectAtIndex(indexPath).Program).url)
moviePlayer = MPMoviePlayerController(contentURL: url)
moviePlayer.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height)
moviePlayer.view.sizeToFit()
self.view.addSubview(moviePlayer.view)
moviePlayer.fullscreen = true
moviePlayer.controlStyle = MPMovieControlStyle.Embedded
}
override func supportedInterfaceOrientations() -> Int {
return Int(UIInterfaceOrientationMask.Portrait.rawValue)
}
}
对不起,我是初学者..
细胞
var arrayOfPrograms: NSArray = []
arrayOfPrograms = [Program(name: "Markíza", url: "http://1.com")]
这就是我试图通过segue传递数据的方式
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
var indexPath: NSIndexPath = self.tableView?.indexPathForSelectedRow() as NSIndexPath!
var destinationViewController: DetailViewController
(segue.destinationViewController as DetailViewController).url = (self.arrayOfPrograms.objectAtIndex(indexPath.row) as Program).url
我希望该网址将为每个命名的单元格打开一个不同的视频。arraysOfPrograms是单元格。
扩展Mundi的答案-这些台词-
var url = NSURL(string:(self.arrayOfPrograms.objectAtIndex(indexPath).Program).url)
moviePlayer = MPMoviePlayerController(contentURL: url)
可以这样写,这更加清楚了-
var url = self.arrayOfPrograms.objectAtIndex(indexPath).Program.url;
moviePlayer = MPMoviePlayerController(contentURL: url);
主要问题是变量“ indexPath”在程序中不存在,因此您不会告诉程序哪个索引要从arrayOfPrograms数组中删除。
就像Mudi所说的那样,即使定义了“ indexPath”,NSIndexPath也不是您要在其中传递的类型,但您仍要在该indexPath的行中传递。所以看起来像这样
// this indexPath probably isn't what you want. Its just an example to illustrate my point.
var indexPath = NSIndexPath(forRow: 1, inSection: 0)
// getting the row (1) from the variable indexPath
var url = self.arrayOfPrograms.objectAtIndex(indexPath.row).Program.url
moviePlayer = MPMoviePlayerController(contentURL: url)
您到底想做什么?您是否要遍历arrayOfPrograms并为该数组中的每个项目创建一个电影播放器?还是应该在表格视图中以及当用户单击特定行时。回答这些特定问题将帮助您弄清楚“ indexPath”的来源。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句