2017-08-17 75 views
0

這是我試圖縮短的代碼。我認爲這有一個循環,但我不確定。有沒有辦法使用循環來標記多個項目(swift3)

piker1.tag = 1 
    piker2.tag = 2 
    piker3.tag = 3 
    piker4.tag = 4 
    piker5.tag = 5 
    piker6.tag = 6 
    piker7.tag = 7 
    piker8.tag = 8 
    piker9.tag = 9 
    piker10.tag = 10 
    piker11.tag = 11 
    piker12.tag = 12 
    piker13.tag = 13 
    piker14.tag = 14 
+1

如果你已經開始使用數組而不是給你的對象命名,那會有一個簡單的循環。這非常愚蠢。這就是數組_is_ - 這是一種將連續數字與對象關聯的方式。 – matt

+1

您應該瞭解'IBCollection'。 – rmaddy

+0

還要考慮如果您已經對視圖進行了引用,那麼對視圖使用標記是否相關。 – Abizern

回答

1

您不能動態生成變量名稱,因爲在編譯時需要知道變量名稱,所以你不能做你正在嘗試做的事情。

如果將所有按鈕放在數組中,則可以遍歷數組並在循環中分配標記,但仍需要手動將按鈕添加到數組中。

let pikers = [piker1, piker2,...piker14] 
for i in 0..<pikers.count { 
    pikers[i].tag = i 
} 
+0

不應該是'... pikers.count - 1'還是'..

+0

雖然這個問題可能會被關閉,安德烈,在斯威夫特,你可以使用像範圍.. <,但是,無論是或你說的...... nm你剛剛編輯,嘿 –

+0

@AndréSlotta權利,編輯答案,謝謝爲了指出這一點 –

1

最優雅的方法是讓IBOutlet集合代替每個選擇器的簡單IBOutlet。 enter image description here

只需從第一個選擇器拖放,就像使用簡單插座一樣,但將Connection更改爲Outlet集合。然後將其他拾取器拖放到同一出口。你會得到一個採集器陣列。 然後重複它們:

for (index, picker) in pickers.enumerated() { 
    picker.tag = index + 1 
} 

Voala!

相關問題