Swift4.2 CAPSPageMenu默认选中指定标签及页面返回问题求助
我来帮你搞定这几个在使用CAPSPageMenu时遇到的问题,都是实际开发中很常见的场景:
1. 点击Save按钮返回至原标签页
你当前用parentNavigationController?.pushViewController跳转到DoctorPersonalEdit,要返回的话直接在Save按钮的点击事件里调用popViewController即可。PageMenu默认会记住之前选中的标签,所以返回后会自动回到「Profile Details」页面:
@IBAction func saveButtonTapped(_ sender: UIButton) { // 先执行你的保存逻辑(比如提交编辑内容) // 然后返回上一页 self.navigationController?.popViewController(animated: true) }
如果返回后需要刷新原页面的数据,可以在「Profile Details」对应的视图控制器的viewWillAppear(_:)方法里添加刷新逻辑。
2. 页面首次加载时高亮第三个标签「Business Page」
CAPSPageMenu在初始化时支持通过配置参数设置默认选中的标签,注意标签索引是从0开始计数的,第三个标签对应的索引是2:
// 准备好你的标签页视图控制器数组 let tabViewControllers: [UIViewController] = [ // 第一个标签VC // 第二个标签VC // 第三个标签「Business Page」对应的VC ] // 配置PageMenu选项,添加默认选中索引 let pageMenuConfig: [CAPSPageMenuOption] = [ // 你的其他配置(比如标签颜色、间距等) .selectedIndex(2), // 设置默认选中第三个标签 .selectedMenuItemLabelColor(.yourHighlightColor) // 自定义高亮颜色 ] // 初始化PageMenu let pageMenu = CAPSPageMenu( viewControllers: tabViewControllers, frame: CGRect(x: 0, y: 64, width: view.frame.width, height: view.frame.height), pageMenuOptions: pageMenuConfig ) view.addSubview(pageMenu.view)
3. 视图控制器加载时默认打开指定标签
这个和上面的场景核心逻辑一致:初始化时通过.selectedIndex(目标索引)配置项指定即可。如果是页面已经加载完成后需要切换标签,可以直接调用PageMenu的实例方法:
// 切换到指定索引(比如索引2,第三个标签),animated控制是否带动画 pageMenu.setSelectedIndex(2, animated: true)
4. 在CAPSPageMenu中打开子视图控制器后切换到指定索引标签
要实现这个功能,需要让子控制器持有PageMenu的实例引用,步骤如下:
- 在
DoctorPersonalEdit中声明一个PageMenu属性:
class DoctorPersonalEdit: UIViewController { var pageMenu: CAPSPageMenu? // 用于持有PageMenu实例 // ...其他代码 }
- 跳转时传递PageMenu引用:
let personalDetail = self.storyboard?.instantiateViewController(withIdentifier: "DoctorPersonalEdit") as! DoctorPersonalEdit personalDetail.pageMenu = self.pageMenu // 传递当前PageMenu实例 self.parentNavigationController?.pushViewController(personalDetail, animated: true)
- 在Save按钮点击时切换标签并返回:
@IBAction func saveButtonTapped(_ sender: UIButton) { // 执行保存逻辑 // 切换到指定标签(比如索引1,「Profile Details」) pageMenu?.setSelectedIndex(1, animated: true) // 返回上一页 self.navigationController?.popViewController(animated: true) }
这样就能在返回后自动切换到你想要的标签页了。
内容的提问来源于stack exchange,提问作者Dilip Tiwari
相关产品推荐
相关产品推荐

