@@ -119,7 +119,7 @@ private class StoryboardParserDelegate: NSObject, NSXMLParserDelegate {
119
119
var reusables : [ Reusable ] = [ ]
120
120
121
121
// State
122
- var currentViewController : ( String , Storyboard . ViewController ) ?
122
+ var currentViewController : Storyboard . ViewController ?
123
123
124
124
@objc func parser( parser: NSXMLParser , didStartElement elementName: String , namespaceURI: String ? , qualifiedName qName: String ? , attributes attributeDict: [ String : String ] ) {
125
125
switch elementName {
@@ -145,7 +145,7 @@ private class StoryboardParserDelegate: NSObject, NSXMLParserDelegate {
145
145
let type = customType ?? Type . _UIStoryboardSegue
146
146
147
147
let segue = Storyboard . Segue ( identifier: segueIdentifier, type: type, destination: destination, kind: kind)
148
- currentViewController? . 1 . addSegue ( segue)
148
+ currentViewController? . addSegue ( segue)
149
149
}
150
150
151
151
case " image" :
@@ -166,7 +166,7 @@ private class StoryboardParserDelegate: NSObject, NSXMLParserDelegate {
166
166
167
167
default:
168
168
if let viewController = viewControllerFromAttributes ( attributeDict, elementName: elementName) {
169
- currentViewController = ( elementName , viewController)
169
+ currentViewController = viewController
170
170
}
171
171
172
172
if let reusable = reusableFromAttributes ( attributeDict, elementName: elementName) {
@@ -176,9 +176,20 @@ private class StoryboardParserDelegate: NSObject, NSXMLParserDelegate {
176
176
}
177
177
178
178
@objc func parser( parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String? , qualifiedName qName: String? ) {
179
- if let currentViewController = currentViewController where elementName == currentViewController. 0 {
180
- viewControllers. append ( currentViewController. 1 )
181
- self . currentViewController = nil
179
+
180
+ // We keep the current view controller open to collect segues until the closing scene:
181
+ // <scene>
182
+ // <viewController>
183
+ // ...
184
+ // <segue />
185
+ // </viewController>
186
+ // <segue />
187
+ // </scene>
188
+ if elementName == " scene " {
189
+ if let currentViewController = currentViewController {
190
+ viewControllers. append ( currentViewController)
191
+ self . currentViewController = nil
192
+ }
182
193
}
183
194
}
184
195
0 commit comments