使用相同 SWRevealViewController 的不同 ViewController 上的侧边栏

Posted

技术标签:

【中文标题】使用相同 SWRevealViewController 的不同 ViewController 上的侧边栏【英文标题】:Sidebars on different ViewControllers using same SWRevealViewController 【发布时间】:2016-01-25 09:55:52 【问题描述】:

我使用SWRevealViewController 来创建侧边栏。在此我使用我的HomeViewController 作为frontSidebarViewController 作为right。 我的SidebarViewController 包含UITableView(具有不同的主题名称)。我想在选择任何主题时打开一个新的ViewControllerQuestionsViewController。 现在我的问题是我想再次使用SWRevealViewControllerQuestionViewController 中有一个侧边栏,但在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 [关闭]

使用 Mockito 多次调用具有相同参数的相同方法

使用 Mockito 多次调用具有相同参数的相同方法

R语言ggplot2可视化配置多个子图中的相同分组使用相同的填充色实战

如何使用相同的测试数据测试 .tflite 模型以证明它的行为与原始模型相同?