###実現したいこと
iOSでSlideMenuControllerSwiftを使用したアプリを作成しています。
Swift3です。
SlideMenuControllerSwiftを使用して画面の左にスライドメニューを作成し、
その中でUITableViewを使用してメニュー項目を作成しています。
上記で作成したメニュー項目を選択時にメインのViewに定義した関数を呼び出したいのですがうまくいきません。。。
LeftViewControllerのコメントの箇所からMainViewControllerのtest()を呼び出したいです。
###該当のソースコード
AppDelegate.swift
swift
1import UIKit 2import SlideMenuControllerSwift 3 4@UIApplicationMain 5class AppDelegate: UIResponder, UIApplicationDelegate { 6 7 var window: UIWindow? 8 9 10 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 11 let storyboard = UIStoryboard(name: "Main", bundle: nil) 12 let mainVC = storyboard.instantiateViewController(withIdentifier: "Main") 13 let leftVC = storyboard.instantiateViewController(withIdentifier: "Left") 14 let navigationController = UINavigationController(rootViewController: mainVC) 15 let slideMenuController = SlideMenuController(mainViewController: navigationController, leftMenuViewController: leftVC) 16 17 self.window?.rootViewController = slideMenuController 18 self.window?.makeKeyAndVisible() 19 return true 20 } 21}
SlideViewController.swift
swift
1import UIKit 2import SlideMenuControllerSwift 3 4class SlideViewController: SlideMenuController { 5 6 override func awakeFromNib() { 7 let mainVC = storyboard?.instantiateViewController(withIdentifier: "Main") 8 let leftVC = storyboard?.instantiateViewController(withIdentifier: "Left") 9 let navigationController = UINavigationController(rootViewController: mainVC!) 10 mainViewController = navigationController 11 leftViewController = leftVC 12 super.awakeFromNib() 13 } 14 15 override func viewDidLoad() { 16 super.viewDidLoad() 17 } 18}
LeftViewController.swift
swift
1import UIKit 2 3class LeftViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 4 5 @IBOutlet weak var tableView: UITableView! 6 var menus = ["メニュー1","メニュー2","メニュー3"]; 7 8 override func viewDidLoad() { 9 super.viewDidLoad() 10 } 11 12 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 13 return menus.count 14 } 15 16 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 17 let cell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "MyCell", for: indexPath) 18 cell.textLabel!.text = menus[indexPath.row] 19 return cell 20 } 21 22 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 23 closeLeft() 24 tableView.deselectRow(at: indexPath, animated: true) 25 // 26 // ここでMainViewControllerのtest()を呼びだしたいです。 27 // 28 } 29}
MainViewController.swift
swift
1import UIKit 2import SlideMenuControllerSwift 3 4class MainViewController: UIViewController { 5 6 override func viewDidLoad() { 7 super.viewDidLoad() 8 self.navigationController?.navigationBar.isTranslucent = false 9 self.navigationController?.navigationBar.barTintColor = UIColor.blue 10 self.navigationController?.navigationBar.tintColor = UIColor.white 11 } 12 13 func test() { 14 print("test") 15 } 16}
###試したこと
いろいろなサイトを参考にDelegateを使った呼び出しをしてみようかと試みましたがどれもうまくいきませんでした。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。