Ril*_*Dev 5 ios uicollectionview swift
所以我目前正在使用Xcode 7 beta将项目转换为Swift 2,我目前收到的错误是:
无法下标类型'[NSIndexPath]?'的值 'Int'类型
对于以下代码:
let indexPath = indexPaths[0] as! NSIndexPath
Run Code Online (Sandbox Code Playgroud)
当用户在UICollectionViewusing prepareForSegue方法中选择一个单元格时尝试将数据传递给视图控制器.
这是完整的prepareForSegue方法.我不确定这是否是Swift 2错误,但在使用Swift 1.1 for iOS 8.4时它可以正常工作.
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "details" {
let vc = segue.destinationViewController as! DetailsViewController
let indexPaths = self.collectionView.indexPathsForSelectedItems()
let indexPath = indexPaths[0] as! NSIndexPath
let selectedItem = items[indexPath.row]
vc.selectedItem = selectedItem
}
}
Run Code Online (Sandbox Code Playgroud)
在iOS8 SDK中,indexPathsForSelectedItems声明为:
func indexPathsForSelectedItems() -> [AnyObject] // returns nil or an array of selected index paths
Run Code Online (Sandbox Code Playgroud)
这是 SDK 中的一个错误,因为当没有选定的项目时indexPathsForSelectedItems()会返回。nil
在iOS9 SDK中,声明为:
public func indexPathsForSelectedItems() -> [NSIndexPath]?
Run Code Online (Sandbox Code Playgroud)
这里有2个区别
OptionalNSIndexPath而不是AnyObject因为 Objective-C 支持简单的泛型。所以,
NSIndexPath尝试:
let indexPaths = self.collectionView.indexPathsForSelectedItems()!
let indexPath = indexPaths[0]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3005 次 |
| 最近记录: |