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