如何以编程方式获取UIVIewController的IBOutlet列表

时间:2017-04-21 05:19:03

标签: ios swift uiviewcontroller interface-builder

我正在构建一个框架。我需要通过代码从UIViewcontroller获取IBOutels列表。我写了InterfaceOutletsReadable协议。如果框架用户符合此协议,我必须从ViewController中读取IBOutlet列表。

 protocol InterfaceOutletsReadable {
     ///Read the outlets objects
     func readOutlets()
 }
 extension InterfaceOutletsReadable {
    //TODO:- Stuck at this stage. Here I have to read the viewcontroller IBOutlets
 }
 class HomeViewController: InterfaceOutletsReadable {
     @IBOutlet weak var userNameTextField: UITextField!
     @IBOutlet weak var passwordTextField: UITextField!
     @IBOutlet weak var errorLabel: UILabel!
 }

修改:我不想从IBOutlet Collection获取列表。有没有办法以编程方式获得所有商店?

2 个答案:

答案 0 :(得分:1)

你可以取IBOutletCollectiontextField并连接到所有其他人。它维护出口阵列,你可以通过索引访问。

答案 1 :(得分:0)

@IBOutlets仅在设计时存在,即使在编译时也没有。因此,按照您想要的方式获得所有商店是不可能的。奥特莱斯与其他变量没有区别。

如果您需要商家列表,可以在readOutlets()HomeViewController实施return Array{ loader: 'css-loader', options: { modules: true, localIdentName: '[path][name]__[local]--[hash:base64:5]', getLocalIdent: (context, localIdentName, localName, options) => { return localIdentName.replace(/^./, string[0].toUpperCase()); } } } 包含您想要的任何变量。