【问题标题】:How to get a UIView from a UIViewController without adding the controller to the view hierarchy and making it visible?如何在不将控制器添加到视图层次结构并使其可见的情况下从 UIViewController 获取 UIView?
【发布时间】:2011-08-27 05:53:54
【问题描述】:

我想避免以编程方式布局视图。

我只想使用 NIB 文件来做这样的工作。

问题是,我所知道的使 NIB 文件栩栩如生的唯一方法是通过这样的控制器:

ZBarReaderViewController* reader = [[ZBarReaderViewController alloc] init];
ScannerOverlayViewController *sovc =
[[ScannerOverlayViewController alloc] initWithNibName:@"ScannerOverlayView" bundle:nil];
reader.cameraOverlayView = sovc.view;

但这种方法效果不佳,因为单步调试调试器显示视图为 0x0 或 Nil。

现在这可能是因为控制器从未添加到/显示在视图层次结构中,我试图从中获取视图,以便在另一个允许的控制器上将其作为“覆盖视图”回收我来指定它。

关于如何在不以编程方式编写视图的情况下实现这一点的任何想法?

【问题讨论】:

    标签: iphone overlay xib nib


    【解决方案1】:

    您可以从 XIB 文件加载视图:

    // I assume, that there is only one root view in interface file
    NSString *nibName = @"CustomView";
    NSArray *loadedObjects = [[NSBundle mainBundle] loadNibNamed:nibName owner:nil options:nil];
    UIView *view = [loadedObjects lastObject];
    

    【讨论】:

    • 非常好!谢谢你。加载的视图是否返回为自动释放?
    • 是的,如果你想拥有它,你需要保留它。
    猜你喜欢
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    • 2016-11-10
    相关资源
    最近更新 更多