私はiOSの検索結果のテーブルビューを作成しています。TableViewに@IBAction関数データを取得するには?
これは私のViewControllerです:
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var resultArray = NSMutableArray()
@IBOutlet weak var scoreTableView: UITableView!
@IBOutlet weak var inputText: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) {
scoreTableView.reloadData()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return resultArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
XXXXXXX
return cell
}
そして、これは私の検索と@IBActionのFUNCです。
func search() -> NSMutableArray{
XXXXXXXXX
return array
}
@IBAction func btnSearch(_ sender: Any) {
resultArray = search()
}
ただし、ビルド後、テーブルビューは空白です。 debugDescription()
では、func search()
がうまく動作し、検索ログを出力していることがわかります。
tableviewのresultArray
は@IBActionのものではありません。それはempty
です。
初心者の方でも、Swiftの「NSMutable ...」コレクションタイプを示唆するチュートリアルに従わないでください。あなたは強いタイプのシステムと戦っている。 'resultArray'をネイティブSwiftの' Array'として宣言します。例えば、 'var resultArray = [String}()'のようにできるだけ具体的に宣言してください。 – vadian
PS: 'search()'関数は非同期タスクを実行しますか?はいの場合は戻り値を使用できません。 – vadian
tableViewsの動作が正しいです。あなたのコードによると、結果配列は常に空であり、必要ではないviewWillAppearでtableViewをリロードするだけです。検索方法にコードを入力してください。 – OverD