以下の様にベースとなっているViewController
からモーダル遷移を呼び出すとできます。
※ この場合はDelegate
を使って呼び出しています。
swift
1
2 import UIKit
3 import PageMenu
4
5 class ViewController : UIViewController , CAPSPageMenuDelegate , ViewController1Delegate {
6
7 var pageMenu : CAPSPageMenu ?
8
9 override func viewDidLoad ( ) {
10 super . viewDidLoad ( )
11
12 var controllerArray : [ UIViewController ] = [ ]
13
14 let controller = storyboard ? . instantiateViewControllerWithIdentifier ( "VC1" ) as ! ViewController1
15 controller . title = "SAMPLE TITLE"
16 controller . delegate = self
17 controllerArray . append ( controller )
18
19 let controller1 = storyboard ? . instantiateViewControllerWithIdentifier ( "VC1" ) as ! ViewController1
20 controller1 . title = "SAMPLE TITLE1"
21 controller1 . delegate = self
22 controllerArray . append ( controller1 )
23
24 let parameters : [ CAPSPageMenuOption ] = [
25 . MenuItemSeparatorWidth ( 4.3 ) ,
26 . UseMenuLikeSegmentedControl ( true ) ,
27 . MenuItemSeparatorPercentageHeight ( 0.1 )
28 ]
29
30 pageMenu = CAPSPageMenu ( viewControllers : controllerArray , frame : CGRectMake ( 0.0 , 0.0 , self . view . frame . width , self . view . frame . height ) , pageMenuOptions : parameters )
31 self . view . addSubview ( pageMenu ! . view )
32 }
33
34 // モーダル遷移
35 func goChatView ( ) {
36 performSegueWithIdentifier ( "chatViewControllerFromCell" , sender : nil )
37 }
38 }
39
40
41 // -----------------------------
42
43
44 protocol ViewController1Delegate : class {
45 func goChatView ( )
46 }
47
48 class ViewController1 : UIViewController , UITableViewDelegate , UITableViewDataSource {
49
50 @IBOutlet weak var tableView : UITableView !
51 weak var delegate : ViewController1Delegate !
52
53 override func viewDidLoad ( ) {
54 super . viewDidLoad ( )
55
56 tableView . estimatedRowHeight = 20
57 tableView . rowHeight = UITableViewAutomaticDimension
58 }
59
60 // Data Array
61 var dataArray = [ "One" , "Two" , "Three" , "Four" , "Five" ]
62
63 // MARK: - TableView Delegate & DataSource
64
65 // Row Count
66 func tableView ( tableView : UITableView , numberOfRowsInSection section : Int ) - > Int {
67 return dataArray . count
68 }
69
70 // Generate Cell
71 func tableView ( tableView : UITableView , cellForRowAtIndexPath indexPath : NSIndexPath ) - > UITableViewCell {
72 let cell = tableView . dequeueReusableCellWithIdentifier ( "Cell" , forIndexPath : indexPath )
73 cell . textLabel ? . text = dataArray [ indexPath . row ]
74 return cell
75 }
76
77 // Select Cell
78 func tableView ( tableView : UITableView , didSelectRowAtIndexPath indexPath : NSIndexPath ) {
79 tableView . deselectRowAtIndexPath ( indexPath , animated : true )
80
81 // デリゲートメソッドを呼び出す
82 delegate ? . goChatView ( )
83 }
84 }
回答追記
PageMenuの中からも問題なく呼び出せたのでDelegateを使用しない例を載せておきます。
swift
1 import UIKit
2 import PageMenu
3
4 class ViewController : UIViewController , CAPSPageMenuDelegate {
5
6 var pageMenu : CAPSPageMenu ?
7
8 override func viewDidLoad ( ) {
9 super . viewDidLoad ( )
10
11 var controllerArray : [ UIViewController ] = [ ]
12
13 let controller = storyboard ? . instantiateViewControllerWithIdentifier ( "VC1" ) as ! ViewController1
14 controller . title = "SAMPLE TITLE"
15 controllerArray . append ( controller )
16
17 let controller1 = storyboard ? . instantiateViewControllerWithIdentifier ( "VC1" ) as ! ViewController1
18 controller1 . title = "SAMPLE TITLE1"
19 controllerArray . append ( controller1 )
20
21 let parameters : [ CAPSPageMenuOption ] = [
22 . MenuItemSeparatorWidth ( 4.3 ) ,
23 . UseMenuLikeSegmentedControl ( true ) ,
24 . MenuItemSeparatorPercentageHeight ( 0.1 )
25 ]
26
27 pageMenu = CAPSPageMenu ( viewControllers : controllerArray , frame : CGRectMake ( 0.0 , 0.0 , self . view . frame . width , self . view . frame . height ) , pageMenuOptions : parameters )
28 self . view . addSubview ( pageMenu ! . view )
29 }
30 }
31
32
33 // -----------------------------
34
35
36
37 class ViewController1 : UIViewController , UITableViewDelegate , UITableViewDataSource {
38
39 @IBOutlet weak var tableView : UITableView !
40
41 override func viewDidLoad ( ) {
42 super . viewDidLoad ( )
43
44 tableView . estimatedRowHeight = 20
45 tableView . rowHeight = UITableViewAutomaticDimension
46 }
47
48 // Data Array
49 var dataArray = [ "One" , "Two" , "Three" , "Four" , "Five" ]
50
51 // MARK: - TableView Delegate & DataSource
52
53 // Row Count
54 func tableView ( tableView : UITableView , numberOfRowsInSection section : Int ) - > Int {
55 return dataArray . count
56 }
57
58 // Generate Cell
59 func tableView ( tableView : UITableView , cellForRowAtIndexPath indexPath : NSIndexPath ) - > UITableViewCell {
60 let cell = tableView . dequeueReusableCellWithIdentifier ( "Cell" , forIndexPath : indexPath )
61 cell . textLabel ? . text = dataArray [ indexPath . row ]
62 return cell
63 }
64
65 // Select Cell
66 func tableView ( tableView : UITableView , didSelectRowAtIndexPath indexPath : NSIndexPath ) {
67 tableView . deselectRowAtIndexPath ( indexPath , animated : true )
68
69 performSegueWithIdentifier ( "chatViewControllerFromCell" , sender : nil )
70 }
71 }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/21 07:13
2016/08/21 09:53 編集