gpt4 book ai didi

ios - 如何从另一个 ViewController 调用函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:47:29 24 4
gpt4 key购买 nike

我正在尝试从我的 Task 类调用 HomeViewController 中的函数 reloadTable。但我一直被扔

Use of instance member 'reloadTable' on type 'HomeViewController'; did you mean to use a value of type 'HomeViewController' instead?

这是我的 HomeViewController 代码:

import UIKit
import Alamofire
import SwiftyJSON

class HomeViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
func reloadTable() {
self.displayTask.reloadData()
}
}

这是我的任务类:

import Foundation
import Alamofire
import SwiftyJSON
class Tasks {

static let sharedInstance = Tasks()

var datas: [JSON] = []

func getTaskDetails(){
Alamofire.request(.GET, Data.weeklyEndpoint).validate().responseJSON { response in
switch response.result {
case .Success(let data):
let json = JSON(data)

if let buildings = json.array {
for building in buildings {
if let startDate = building["start_date"].string{
print(startDate)
}
if let tasks = building["tasks"].array{

Tasks.sharedInstance.datas = tasks

HomeViewController.reloadTable()

for task in tasks {
if let taskName = task["task_name"].string {
print(taskName)
}
}
}
}
}



case .Failure(let error):
print("Request failed with error: \(error)")
}
}

}

// for prevent from creating this class object
private init() { }


}

最佳答案

在这种情况下,reloadTable() 是一个实例方法。您不能通过类名调用它,您必须为 HomeViewController 创建对象,然后您必须使用该对象调用该方法。

但在这种情况下,无需使用HomeViewController 对象直接调用该方法。您可以使用 NSNotification

以另一种方式执行此操作

使用NSNotification:

为您的 HomeViewController 添加一个通知观察者

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(HomeViewController.reloadTable), name:"ReloadHomeTable", object: nil)

HomeViewControllerviewDidLoad 方法中添加以上几行

现在用 NSNotificationCenter.defaultCenter().postNotificationName("ReloadHomeTable", object: nil) 在你的 Task

关于ios - 如何从另一个 ViewController 调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37291824/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com