0
私は代議員に問題があります。以下 は、ここでタイプのUITableViewController代理人はゼロです(Swift 3)
import Foundation
import UIKit
protocol DashboardControllerDelegate{
func companySelected()
}
class DemoTable: UITableViewController
{
var delegate : DashboardControllerDelegate?
var arr_string = [String]()
init(array: [String])
{
arr_string = array
super.init(nibName: nil, bundle: nil)
}
required init?(coder aDecoder: NSCoder)
{
fatalError("init(coder:) has not been implemented")
}
override func numberOfSections(in tableView: UITableView) -> Int
{
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return arr_string.count
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
delegate?.companySelected()
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
var cell = tableView.dequeueReusableCell(withIdentifier: "Cell")
if cell == nil {
cell = UITableViewCell(style: .default, reuseIdentifier: "Cell")
cell?.frame(forAlignmentRect: CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 30))
}
cell?.textLabel?.text = arr_string[indexPath.row]
return cell!
}
}
のDemoTableクラスであるコントローラクラス
import UIKit
class ViewController: UIViewController, DashboardControllerDelegate
{
var dataSourceTable:DemoTable?
override func viewDidLoad()
{
super.viewDidLoad()
let fruitList = UITableView(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height * 0.9))
fruitList.backgroundColor = UIColor.white
let arr_Fruits = ["Mango", "Papaya", "Graps", "Apple"]
self.dataSourceTable = DemoTable(array: arr_Fruits)
fruitList.dataSource = self.dataSourceTable
fruitList.delegate = self.dataSourceTable
view.addSubview(fruitList)
}
override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
}
func companySelected()
{
print("Selected")
}
}
問題はViewControllerをクラスで呼び出されていない "companySelected" デリゲート関数です。 ヘルプは感謝します:-)
デフォルトの初期化子を追加する必要が 'DemoTableは()'ストーリーボード内のインスタンスは異なる新たなインスタンスを作成します。あなたは実際の参照が必要です。 – vadian
私はストーリーボードを使用していませんので、私は非常にiOSに新しいですので詳細を教えてください –
あなたがストーリーボードを使用していない理由は何ですか?コードでのUIの作成は、かなり高度なトピックです。この場合は、コントローラをビュー階層に追加する必要があります。 – vadian