画面遷移はViewControllerからじゃないとできない?
前提・実現したいこと
Swift3.0でTableViewのセルをタップして別のStoryboardにあるViewControllerに画面遷移させたいのですが,
画面遷移させる以下のメソッド
present(viewController, animated: true, completion: nil)
がTableViewクラスで実装できません.
このような場合はTableViewControllerを使うしか方法はないのでしょうか?
ご回答いただけると助かります。
発生している問題・エラーメッセージ
Use of unresolved identifier 'present'
該当のソースコード
/*
* FolderTableView.swift
*/
import UIKit
class FolderTableView: NSObject, UITableViewDelegate, UITableViewDataSource {
// 途中省略
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let storyboard: UIStoryboard = UIStoryboard(name: "Task", bundle: nil)
let taskListViewController = storyboard.instantiateViewController(withIdentifier: "Task")
self.present(taskListViewController, animated: true, completion: nil)
↑このメソッドで画面遷移させたい
}
}
/*
* FolderListViewController.swift
*/
import UIKit
import RealmSwift
class FolderListViewController: UIViewController {
@IBOutlet weak var folderTableView: UITableView!
let folderTable = FolderTableView()
override func viewDidLoad() {
super.viewDidLoad()
folderTableView.delegate = folderTable
folderTableView.dataSource = folderTable
}
// 省略
}
試したこと
・TableViewを呼び出しているFolderListViewController内でpresentメソッドを実装
→セルをタップした時にfolderTableView.delegate = folderTableの行で以下のエラーが発生
fatal error: unexpectedly found nil while unwrapping an Optional value
・presentメソッド用のViewControllerクラスを作成し,FolderTableViewでメソッドを呼び出す
→セルをタップした時に以下のエラーが発生
Warning: Attempt to present <skillup7.TaskListViewController: 0x7f98eb423650> on <skillup7.TestViewController: 0x7f98eb522230> whose view is not in the window hierarchy!
↓↓用意したViewControllerクラス↓↓
/*
* TestViewController.swift
*/
import UIKit
class TestViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func send(viewController: UIViewController) {
self.present(viewController, animated: true, completion: nil)
}
}
補足情報(言語/FW/ツール等のバージョンなど)
言語:Swift 3.0