iOS:从视图中查找 uiviewcontroller 的类名

Posted

技术标签:

【中文标题】iOS:从视图中查找 uiviewcontroller 的类名【英文标题】:iOS: Finding the uiviewcontroller's class name from view 【发布时间】:2013-10-06 04:57:26 【问题描述】:

我的 TabBarViewController 添加了太多级别的 ViewControllers/Views。我必须像这样在 -(void)viewDidAppear:animated 中配置我想要的正确视图:

[[[[[self.view.subviews[0] subviews][0] subviews][0] subviews][0] subviews][0] setAutoresizingMask:UIViewAutoresizingFlexibleHeight];

这段代码很丑,没人看懂。

我想找到对应的视图控制器/视图并在那里进行配置。我试过了

[[[[self.view.subviews[0] subviews][0] subviews][0] subviews][0] subviews][0] class]

但是,它返回 UIView,这对我一点帮助都没有。

编辑:

我正在尝试访问 UIViewControllerWrapperView 以更改其自动调整大小属性。但是,根据这篇文章:What is UIViewControllerWrapperView? 似乎无法访问。我仍在努力寻找正确的(或最接近的)视图控制器来更改其属性,以便我没有或更少的 [subview objectAtIndex:0] 东西。

我想做的是

【问题讨论】:

我只是没有得到你想要达到的目标。 @Unheilig 嘿,我已经编辑了帖子并发布了截图。希望它现在对您有所帮助。 【参考方案1】:

我认为没有人理解它,因为您这样做的方式确实不标准并且是个坏主意。您在寻找什么视图?你不应该这样找到它。标准方法是使用 XIB 或 Storyboard 并使用 IBOutlet 将视图从那里连接到 ViewController。然后你就可以这样引用它。

如果您不知道如何将事物与故事板联系起来,可以观看 this video。

如果您以编程方式添加此视图,您应该在 ViewController 中创建一个属性,并在该属性中保存对您的视图的引用。像这样:

@property (nonatomic, strong) YourViewClassType *fancyView;

然后,当您创建它时,只需将 fancyView 设置为您创建的视图。

【讨论】:

感谢您的回答。但是我从别人那里得到了这个项目,我对此知之甚少。他们使用了故事板,但我无法更改那里的灵活高度。我不知道为什么。 您不需要在此处更改它,但您可以将该视图从情节提要连接到其视图控制器类。然后你可以在你的视图控制器中改变它。

以上是关于iOS:从视图中查找 uiviewcontroller 的类名的主要内容,如果未能解决你的问题,请参考以下文章

从设置视图 iOS 返回时启动不同的 UIViewController

从 UINavigationController (IOS 5) 弹出 UIViewController 时出现奇怪的动画

iOS:如何从 UIViewController 通知 appDelegate

从 didSelectRowAtIndexPath iOS 10 在 UIViewController 中添加新的 subView

查找不被 UINavigationBar、UITabBar 等遮挡的 UIViewController 视图的边界

在 iOS 7 中动态更改 UIViewController 的视图