我用下面的類來管理圖片的幻燈片的列表和跟蹤活動的幻燈片干擾:手勢事件與地產觀察者捕捉性能處於無效狀態
class Slides
{
var list: [String] = []
var activeIndex: Int = 0
{
didSet
{
if activeIndex < 0
{
activeIndex = list.count - 1
}
else
if activeIndex > list.count
{
activeIndex = 0
}
}
}
var active: String
{
get
{
return list[activeIndex]
}
}
func next() -> Int
{
return activeIndex++
}
func prev() -> Int
{
return activeIndex--
}
}
功能prev()
和next()
給我一張或下一張幻燈片以打圈的方式 - 包裝到幻燈片列表的開始或結束。
我正在使用activeIndex
屬性觀察器來防止設置無效索引。
在應用程序中,我使用滑動手勢顯示下一張或上一張幻燈片。
@IBAction func onSwipeLeft(sender: AnyObject)
{
slides.next()
let slide = slides.active
...
}
@IBAction func onSwipeRight(sender: AnyObject)
{
slides.prev()
let slide = slides.active
...
}
它運作良好,大部分的時間,但偶爾刷來回觸發active
屬性獲取array index out of range
例外。這意味着手勢事件中斷並執行代碼,將實際值設置爲activeIndex
並呼叫其觀察者,防止activeIndex
存儲無效值。
問題是爲什麼發生在第一個地方,什麼是解決方案?
謝謝,就是它了。關閉一個錯誤... –
@dfri如果你的意思是我假設列表總是有元素,即使它看起來可能是空的,我已經覆蓋了該部分。 –
@DalijaPrasnikar或者我會在這裏提一下:'myIntVar ++'將在Swift 3中被棄用,爲了不會在未來破壞你的應用程序,你最好使用'myIntVar = myIntVar + 1'。 – dfri