从 UITableViewController 到 UISplitViewController Swift - Iphone App
segue from UITableViewController to UISplitViewController Swift - Iphone App
我实现了一个 SWRevealViewController
菜单,它的后视图是 UITableViewController
,上面只有很少的标签。我想要做的是从这些标签转到 UISplitViewController
。
当我按住 Ctrl 单击并从标签拖动到 UISplitViewController 时,没有显示任何 segue 选项。这是Main.storyboard
的截图
我也无法将 UISplitViewController 嵌入到 UINavigationController 中,当我转到 Editor/Embed 中时,所有选项都是灰色的。
实际上,您可以将 UINavigation 控制器与容器视图和第二个视图控制器结合使用。
将 UINavigationController 添加到故事板并确保将其设置为初始视图控制器:
- 删除 Xcode 自动添加的不必要的 table 视图控制器
- 将 UIViewController 添加到您的故事板(让我们重命名它
VC1
)
- 从情节提要导航树中,ctrl+从导航控制器拖动到 VC1,然后 select
root view controller
从弹出窗口的 Relationship Segue 下:
向 VC1 添加一个 UIButton:
向场景添加第二个视图控制器(让我们重命名它VC2
)
向 VC2 添加容器视图,替换 初始视图(将其拖到视图顶部,使其突出显示为灰色):
如果你做对了,它应该是这样的:
删除Xcode自动添加到场景并嵌入到容器视图中的不必要的View Controller,然后在场景中添加一个Split View Controller
- ctrl+从 VC2 的容器视图拖动到 Split View Controller 并 select 嵌入:
最后但并非最不重要的一点是,从 VC1 中的按钮添加一个 show (prev. push) segue 到 VC2 -- ctrl+从中的按钮拖动VC1 到 VC2 控制器和 select 显示:
Pushing a split view controller through navigation controller is not
possible, but there is a alternative that get the job done
您可以创建一个视图控制器并将拆分视图控制器添加为子视图控制器,然后您可以通过导航控制器推送创建的视图控制器。它将显示您的拆分视图控制器,您可以同时使用主视图和细节视图。在tableview
的didselect方法中添加navigation push方法
*记住 将你的splitviewcontroller class 添加到故事板class 中的自定义
注意 splitcontroller -> (master, detail)
let splitVC = getViewController(storyBoardName: "story board name", viewControllerName: "split view controller identifier") as! yoursplitviewcontroller
view.addSubview(splitVC.view)
view.bounds = splitVC.view.bounds
addChild(splitVC)
func getViewController(storyBoardName: String, viewControllerName: String) -> UIViewController{
let storyBoard = UIStoryboard(name: storyBoardName, bundle: nil)
return storyBoard.instantiateViewController(identifier: viewControllerName)
}
我实现了一个 SWRevealViewController
菜单,它的后视图是 UITableViewController
,上面只有很少的标签。我想要做的是从这些标签转到 UISplitViewController
。
当我按住 Ctrl 单击并从标签拖动到 UISplitViewController 时,没有显示任何 segue 选项。这是Main.storyboard
我也无法将 UISplitViewController 嵌入到 UINavigationController 中,当我转到 Editor/Embed 中时,所有选项都是灰色的。
实际上,您可以将 UINavigation 控制器与容器视图和第二个视图控制器结合使用。
将 UINavigationController 添加到故事板并确保将其设置为初始视图控制器:
- 删除 Xcode 自动添加的不必要的 table 视图控制器
- 将 UIViewController 添加到您的故事板(让我们重命名它
VC1
) - 从情节提要导航树中,ctrl+从导航控制器拖动到 VC1,然后 select
root view controller
从弹出窗口的 Relationship Segue 下: 向 VC1 添加一个 UIButton:
向场景添加第二个视图控制器(让我们重命名它
VC2
)向 VC2 添加容器视图,替换 初始视图(将其拖到视图顶部,使其突出显示为灰色):
如果你做对了,它应该是这样的:
删除Xcode自动添加到场景并嵌入到容器视图中的不必要的View Controller,然后在场景中添加一个Split View Controller
- ctrl+从 VC2 的容器视图拖动到 Split View Controller 并 select 嵌入:
最后但并非最不重要的一点是,从 VC1 中的按钮添加一个 show (prev. push) segue 到 VC2 -- ctrl+从中的按钮拖动VC1 到 VC2 控制器和 select 显示:
Pushing a split view controller through navigation controller is not possible, but there is a alternative that get the job done
您可以创建一个视图控制器并将拆分视图控制器添加为子视图控制器,然后您可以通过导航控制器推送创建的视图控制器。它将显示您的拆分视图控制器,您可以同时使用主视图和细节视图。在tableview
的didselect方法中添加navigation push方法*记住 将你的splitviewcontroller class 添加到故事板class 中的自定义
注意 splitcontroller -> (master, detail)
let splitVC = getViewController(storyBoardName: "story board name", viewControllerName: "split view controller identifier") as! yoursplitviewcontroller
view.addSubview(splitVC.view)
view.bounds = splitVC.view.bounds
addChild(splitVC)
func getViewController(storyBoardName: String, viewControllerName: String) -> UIViewController{
let storyBoard = UIStoryboard(name: storyBoardName, bundle: nil)
return storyBoard.instantiateViewController(identifier: viewControllerName)
}