2017-07-18 50 views
0

我有一個視圖控制器,我需要有近200個文本框。 我,構建一個能量計算,我需要給用戶添加的所有他可能感興趣的......斯威夫特 - 許多IBOutlets一個控制器

我的問題領域的可能性是: 必給的問題,當涉及到內存用法和性能? 有沒有更好的方法來添加200 Outlets來收集用戶的文本插入?

+2

你應該使用'UITableView'或'UICollectionView'與細胞內的文本字段。他們實施可重用性。一次顯示200個文本字段會對性能產生影響。 – Sulthan

+0

我的問題是,我使用所有的領域來執行一些數學...我不知道如果有可能這樣做,如果我使用集合視圖... – Marco

+3

即使使用200文本字段,我想你是存儲以某種數據結構輸入值,並不直接與textfields的文本屬性一起工作。使用相同的方法,即使其中一些在屏幕上不可見,也可以從所有tableview/collectionview單元持久化用戶輸入,因此它們已被系統重用。 –

回答

0

我建議你在每個單元格中使用一個UITableViewUICollectionView和一個UITextField。一旦用戶開始輸入,你可以存儲的值,例如:

class VC: UIViewController { 
    private var values: [Int]? 

    // code for reuse the cell 
    // ............ 

    // you can use UITextFieldDelegate, store the index the user is at... 
    // the logic is up to you 
    func userTappedSomething() { 
     values?.append(Int(currentFocusedCell.myTextField.text)) 
    } 
} 

這種邏輯可能會有所不同,因爲這樣的邏輯是你可以存儲你在或者即使是目前正在鍵入的文本當前索引路徑但您的想法是存儲您按順序點擊的每個值,以便在UI中「導航」並能夠呼叫cellForRow並設置存儲的值。

關於文本字段,您可以使用標籤或使用IBOutlet創建自定義單元格並直接進行訪問。

警告:未經測試的代碼