使用相同 SWRevealViewController 的不同 ViewController 上的侧边栏
Posted
技术标签:
【中文标题】使用相同 SWRevealViewController 的不同 ViewController 上的侧边栏【英文标题】:Sidebars on different ViewControllers using same SWRevealViewController 【发布时间】:2016-01-25 09:55:52 【问题描述】:我使用SWRevealViewController
来创建侧边栏。在此我使用我的HomeViewController
作为front 和SidebarViewController
作为right。
我的SidebarViewController
包含UITableView
(具有不同的主题名称)。我想在选择任何主题时打开一个新的ViewController
说QuestionsViewController
。
现在我的问题是我想再次使用SWRevealViewController
在QuestionViewController
中有一个侧边栏,但在SWRevealViewController
前面segue 的标识符sw_front
是一个常量字符串,所以我该如何更改它或有任何其他方式来拥有它QuestionViewController
中的侧边栏。
简而言之:我们能否在不同的ViewControllers
中使用SWRevelViewController
拥有相同的侧边栏
【问题讨论】:
【参考方案1】:试试这个: 使用 HomeViewController 创建 NavigationViewController, 将 RevealViewController 与 NavigationController 结合为“显示视图控制器集控制器”, 将 HomeViewController 转到 QuestionViewController 作为“显示”, 在导航栏的左侧添加“栏按钮项”(命名为:“OpenSideBar”), 在他们的 swift 文件中创建一个出口,然后添加到您的 viewDidLoad 中:
OpenSideBar.target = self.revealViewController()
OpenSideBar.action = Selector("revealToggle:")
**为我工作
【讨论】:
顺便别忘了将 RevealViewConroller 设置为初始视图控制器【参考方案2】:只需使用“显示视图控制器集控制器”segue 将您的 RevealViewController 连接到您的新视图控制器
【讨论】:
其实我已经添加了,但是在运行时我需要更改它的 Front & Rare View 控制器【参考方案3】:我有一个解决方案,我们可以使用以下代码更改前后ViewControllers
。
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
[self.revealViewController setRightViewController:[storyBoard instantiateViewControllerWithIdentifier:@"SideBarVC"]]; // To change rightViewController
[self.revealViewController setFrontViewController:[storyBoard instantiateViewControllerWithIdentifier:@"HomeVC"] animated:YES]; // To change frontViewController
为此,我们必须使用SWRevealViewControllerSeguePushController
作为其他FrontViewControllers
的segue 类
感谢大家的帮助。
【讨论】:
以上是关于使用相同 SWRevealViewController 的不同 ViewController 上的侧边栏的主要内容,如果未能解决你的问题,请参考以下文章
我可以使用相同的域名和相同的端口设置 VirtualHost [关闭]