созданный экземпляр контроллера представления с идентификатором «UIViewController-ZWG-5q-24I» из раскадровки «Main», но не получил UITableView. ' - PullRequest
0 голосов
/ 24 марта 2019

Я пытаюсь перейти от выбора UIPickerView к UITableViewController. Когда пользователь выбирает год, он должен перейти к UITableView, чтобы отобразить список позиций водителя за данный год. У меня проблема в том, что UINavigationController не является rootViewController. Как я производю UITableViewController программно. Если бы это было так, я знаю, я бы реализовал этот код в AppDelegate

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
     window?.makeKeyAndVisible()
     window?.rootViewController = UINavigationController(rootViewController: StandingTableViewController())
    return true
}

Это не правильно, так как это будет идти прямо к UITableViewController. Ниже приведен код для UIPickerView.

extension seasonViewController: UIPickerViewDelegate, UIPickerViewDataSource {
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return seasons.count
}

func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    return seasons[row]
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

    selectedSeason = seasons[row]
    seasonTextField.text = selectedSeason
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "getStanding" {
        let standingVC = segue.destination as! StandingTableViewController

        standingVC.standing = seasonTextField.text!

    }
}

Это код для TableViewController.

class StandingTableViewController: UITableViewController {

var standing = ""
let SEASON_URL = "https://ergast.com/api/f1"

var champions: [DriverStanding] = []
override func viewDidLoad() {
    super.viewDidLoad()
    navigationController?.title = standing

    fetchJSON(standing: standing)

}

Я пытаюсь избежать этого в раскадровке. Или мне нужно будет создать UITableView в раскадровке в этом случае? Просто чтобы вы знали, что UIPickerView является частью приложения TabView. Извините за это позднее добавление. Не уверен, что это повлияет на ответ. Storyboard layout Любая помощь будет оценена.

1 Ответ

0 голосов
/ 24 марта 2019

Из вашего изображения похоже, что вы использовали обычный UIViewController в раскадровке и задали ему класс StandingTableViewController, который является подклассом UITableViewController.

Из-за этого вы получаете нормальный UIView вместо UITableView как view.

Чтобы исправить это, удалите контроллер из раскадровки, добавьте вместо него новый UITableViewContoller и установите его класс на StandingTableViewController

...