@@ -5,7 +5,7 @@ public protocol ImageDataSource:class {
55 func imageItem( at index: Int ) -> ImageItem
66}
77
8- class ImageCarouselViewController : UIPageViewController {
8+ public class ImageCarouselViewController : UIPageViewController {
99
1010 weak var imageDatasource : ImageDataSource ?
1111 var initialIndex = 0
@@ -19,6 +19,8 @@ class ImageCarouselViewController:UIPageViewController {
1919
2020 var options : [ ImageViewerOption ] = [ ]
2121
22+ weak var rightNavItemDelegate : RightNavItemDelegate ?
23+
2224 private( set) lazy var navBar : UINavigationBar = {
2325 let _navBar = UINavigationBar ( frame: . zero)
2426 _navBar. isTranslucent = true
@@ -61,15 +63,29 @@ class ImageCarouselViewController:UIPageViewController {
6163
6264 options. forEach {
6365 switch $0 {
64- case . theme( let theme) :
65- self . theme = theme
66- case . closeIcon( let icon) :
67- navItem. leftBarButtonItem? . image = icon
66+ case . theme( let theme) :
67+ self . theme = theme
68+ case . closeIcon( let icon) :
69+ navItem. leftBarButtonItem? . image = icon
70+ case . rightNavItemTitle( let title, let delegate) :
71+ navItem. rightBarButtonItem = UIBarButtonItem (
72+ title: title,
73+ style: . plain,
74+ target: self ,
75+ action: #selector( diTapRightNavBarItem ( _: ) ) )
76+ rightNavItemDelegate = delegate
77+ case . rightNavItemIcon( let icon, let delegate) :
78+ navItem. rightBarButtonItem = UIBarButtonItem (
79+ image: icon,
80+ style: . plain,
81+ target: self ,
82+ action: #selector( diTapRightNavBarItem ( _: ) ) )
83+ rightNavItemDelegate = delegate
6884 }
6985 }
7086 }
7187
72- override func viewDidLoad( ) {
88+ override public func viewDidLoad( ) {
7389 super. viewDidLoad ( )
7490
7591 addBackgroundView ( )
@@ -92,24 +108,36 @@ class ImageCarouselViewController:UIPageViewController {
92108 setViewControllers ( [ initialVC] , direction: . forward, animated: true , completion: nil )
93109 }
94110
95- override func viewDidAppear( _ animated: Bool ) {
111+ override public func viewDidAppear( _ animated: Bool ) {
96112 super. viewDidAppear ( animated)
97113 UIView . animate ( withDuration: 0.235 ) {
98114 self . navBar. alpha = 1.0
99115 }
100116 }
101117
102118 @objc
103- func dismiss( _ sender: UIBarButtonItem ? ) {
119+ private func dismiss( _ sender: UIBarButtonItem ) {
120+ dismissMe ( completion: nil )
121+ }
122+
123+ public func dismissMe( completion: ( ( ) -> Void ) ? = nil ) {
104124 sourceView. alpha = 1.0
105125 UIView . animate ( withDuration: 0.235 , animations: {
106126 self . view. alpha = 0.0
107127 } ) { _ in
108- self . dismiss ( animated: false , completion: nil )
128+ self . dismiss ( animated: false , completion: completion )
109129 }
110130 }
111131
112- override var preferredStatusBarStyle : UIStatusBarStyle {
132+ @objc
133+ func diTapRightNavBarItem( _ sender: UIBarButtonItem ) {
134+ guard let _delegate = rightNavItemDelegate,
135+ let _firstVC = viewControllers? . first as? ImageViewerController
136+ else { return }
137+ _delegate. imageViewer ( self , didTapRightNavItem: _firstVC. index)
138+ }
139+
140+ override public var preferredStatusBarStyle : UIStatusBarStyle {
113141 if theme == . dark {
114142 return . lightContent
115143 }
@@ -118,7 +146,7 @@ class ImageCarouselViewController:UIPageViewController {
118146}
119147
120148extension ImageCarouselViewController : UIPageViewControllerDataSource {
121- func pageViewController(
149+ public func pageViewController(
122150 _ pageViewController: UIPageViewController ,
123151 viewControllerBefore viewController: UIViewController ) -> UIViewController ? {
124152
@@ -135,7 +163,7 @@ extension ImageCarouselViewController:UIPageViewControllerDataSource {
135163 delegate: self )
136164 }
137165
138- func pageViewController(
166+ public func pageViewController(
139167 _ pageViewController: UIPageViewController ,
140168 viewControllerAfter viewController: UIViewController ) -> UIViewController ? {
141169
0 commit comments