我試圖在Swift中創建一個非常基本的集合視圖控制器,它允許我列出一些數字,當我點擊其中一個數字時,它會帶我到一個簡單的說明一個標籤)你點了多少號碼。UICollectionView數組索引超出範圍
故事板: 我的故事板有一個作爲根的導航控制器和一個被加載的集合視圖控制器。這包含一個單元格,他有一個單元格的標識符。這個單元格有一個按鈕,用作細節頁面的一個細節。我已經指定了數據源指向自己(控件點擊了視圖控制器來建立數據源),並且我已經將showue唯一標識爲showDetail。
當我加載應用程序,它顯示我的按鈕7次,但是當我點擊其中任何一個,我在下面的橫線得到的指數超出範圍:
這裏是我的代碼:
進口基金會 進口的UIKit
class WeekCollectionView : UICollectionViewController
{
override func collectionView(collectionView: UICollectionView!, numberOfItemsInSection section: Int) -> Int
{
return 7
}
override func collectionView(collectionView: UICollectionView!, cellForItemAtIndexPath indexPath: NSIndexPath!) -> UICollectionViewCell!
{
let cell: ShiftCell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as ShiftCell
return cell;
}
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!)
{
if (segue.identifier == "showDetail") {
**//CRASHES ON THIS LINE BELOW FOR THE ARRAY [0]**
let indexPaths: NSArray = self.collectionView.indexPathsForSelectedItems()[0] as NSArray
let destinationViewController = segue.destinationViewController as DetailViewController
//var someNumber = images[indexPath.row]
destinationViewController.mySpecialID = 1 //replace this with someNumber, always set 1 for now as a test
}
}
}
我的手機(上圖)類很簡單:
class ShiftCell: UICollectionViewCell {
init(frame: CGRect) {
super.init(frame: frame)
}
init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
}
我真的不確定我做錯了什麼 - 也許還有其他事情需要發生在我的故事板?我遵循了蘋果公司的一個教程(在Objective-C中),該教程非常完美,如果我沒有弄錯,所有的代碼都是相同的!
我真的被困在這裏,非常感謝,如果任何人都可以指出我在正確的方向! :)
非常感謝你 - 我會在稍後嘗試。所以,如果我點擊按鈕,並向下滾動到「標籤」,我可以給它一個像200或什麼的東西?就是這樣?這個「中繼器」會讓每個按鈕的標籤是200嗎? – NullHypothesis
所以我給了這個嘗試,它仍然崩潰(我點擊單元格內的按鈕,並將標籤設置爲198)。我需要給每個按鈕一個獨特的標籤,因爲它重複?就像我在單元格中只有一個按鈕,每次迭代發生時,我是否需要以編程方式爲按鈕指定一個唯一標記? – NullHypothesis
@ user3379785我用一些示例代碼更新了我的答案。你確實需要爲每個按鈕設置一個唯一的標籤。更具體地說,您希望單元格上的標籤與其顯示的索引完全匹配。 – drewag