如何检测 UIViewController 内的 UITableView 类?
Posted
技术标签:
【中文标题】如何检测 UIViewController 内的 UITableView 类?【英文标题】:How to detect class of UITableView inside of UIViewController? 【发布时间】:2016-05-19 09:01:14 【问题描述】:我使用PageMenu 进行视图控制器分页。我有一个主视图控制器,后来我在其中添加了 3 个 UITableViewController。现在,当我从 MainControllers 第二个选项卡转到某个 ViewController 并返回时,它会看到它就像第一个选项卡,而不是第二个选项卡。
现在我想在我的主 ViewController 中检测 UITableView 类。我该怎么做?
我试过了:
for vc in navigationController!.viewControllers
if vc is UITableViewController
print("POPO \(vc)")
但此代码不打印任何内容。我做错了什么?
【问题讨论】:
isKindOfClass(UITableViewController) 会有所帮助 这意味着你的导航控制器的视图控制器都不是 UITableViewControllers。如果没有更多关于应用结构的背景信息,就很难提供帮助。 @Jeff 不,我有!你能看看那些回购吗?你会理解这个概念 @PKT 它对我也没有帮助 【参考方案1】:试试
if vc.isKindOfClass(UITableViewController)
print("POPO \(vc)")
或者
if let viewController = vc as? UITableViewController
print("POPO \(vc)")
【讨论】:
但在这种情况下它也不会打印任何东西 试试vc.isKindOfClass(UIViewController)
看看它是否都打印出来
基本上我认为您的 ViewController 不在导航堆栈上【参考方案2】:
for vc in navigationController!.viewControllers
if vc is UITableViewController
print("POPO \(vc)")
这将仅在 TableViewController
仍在 UINavigationController
堆栈中时打印语句。如果您访问了TableViewController
并通过pop
返回,则从导航堆栈中删除相同的内容,并且不再上面的代码片段打印任何内容。确保 TableViewController 在堆栈中以获取此方法中的结果。
【讨论】:
以上是关于如何检测 UIViewController 内的 UITableView 类?的主要内容,如果未能解决你的问题,请参考以下文章
如何检测 iOS UIViewController 是不是被交互或触摸
如何检测 UIViewController 外部的点击/触摸
iOS Dev - 如何检测用户通过按“返回”访问此 UIViewController
从 uiviewcontroller 操作 uicollectionviewcell 内的 uicollectionview
根 ViewController 内的 UIViewController 不旋转
在 UINavigationController 内的 UIViewController 内加载 UITableViewController