前提・実現したいこと

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