如何从Swift中的另一个UIViewController访问字段/方法?

时间:2016-02-25 18:55:47

标签: ios swift uiviewcontroller

我有以下情况:

enter image description here

我有一个嵌入了两个Container View的UIViewController,一个是隐藏的,一个是可见的。这两个Container View都嵌入了另一个UIViewController s和一些元素。

我想在两个面板上呈现从webservice获取的数据,但我想只获取一次数据,然后根据面板用户当前看到的内容以特定方式解析它。

我有一个以json:

的形式获取数据的方法
func loadInitialDataWithoutCluster() {
        print("loadInitialData");
        RestApiManager.sharedInstance.getRequests { json in
            if let jsonData = json.array {
                for requestJSON in jsonData {
                    dispatch_async(dispatch_get_main_queue(),{
                        if let request = SingleRequest.fromJSON(requestJSON){

                          //how can I add those single requests
                          // to a list/array/whatever here that will be
                          // accessible from both of two other panels?
                        }
                    })
                }
            }
        }

    }

然后当它获取所有数据并(以某种方式)将其分配给列表/数组时 - 我如何从两个不同的面板中引用它?

2 个答案:

答案 0 :(得分:0)

这将是最佳编程实践的解决方案。从技术上讲,您不应该允许任何类直接操作您的数据,而是创建为您工作的函数。我已经包含了一个读取和写入数组的函数,您可以根据需要对它们进行操作。

class ArrayObject {

  private var downloadedData = [1,2,3]

  internal func readData() -> [Int] {
    return downloadedData
  }

  internal func addData(number: Int) -> [Int] {

    downloadedData.append(number)

    return downloadedData
  }
}


class genericControllerClass: UIViewController {

  func currentData() {
    let getUsers = ArrayObject().addData(15)
  }
}

答案 1 :(得分:-1)

您可以使用简单的结构创建一个新文件来存储您需要的详细信息数组,您可以从项目的任何位置访问它。

struct Arrays {

  static var downloadedData = [TheTypeYouNeedToStore]()
}

只需使用Arrays.downloadedData.append()下载数据后即可添加到此数组中。然后,可以使用Arrays.downloadedData [0]

访问和修改项目中的任何其他位置