在不使用 IB 的情况下添加 UIImageView 作为 UIViewController 的子视图

Posted

技术标签:

【中文标题】在不使用 IB 的情况下添加 UIImageView 作为 UIViewController 的子视图【英文标题】:Add a UIImageView as a subview of a UIViewController without using IB 【发布时间】:2009-09-05 08:56:48 【问题描述】:

在我的 UIViewController 的 viewDidLoad 方法中,我实例化了一个名为 stage 的 UIImageView 实例:

stage = [Stage viewWithParent:self];

这就是所谓的:

- (id)initWithParent:(UIView *)parent 
    self = [self initWithFrame:CGRectZero];

    if (!self)
        return nil;

    [parent addSubview:self];

    return self;



+ (id) viewWithParent:(UIView *)parent 
    return [[[self alloc] initWithParent:parent] autorelease];

在我以前从 UIImageView 中调用它之前,一切都很好。图像可见,触摸事件已启用并响应。从 UIViewController 我得到一个窗口,但没有显示任何内容,也没有记录任何触摸。我错过了什么?

任何帮助表示赞赏!

谢谢 // :)

【问题讨论】:

看到这个------***.com/questions/3321374/… 【参考方案1】:
stage = [Stage viewWithParent:self.view];

应该可以。

Xcode 没有对此发出警告吗?

【讨论】:

没有警告,也开启了静态分析器的干净构建。我的代码准确地读取了您那里的内容,但仍然没有乐趣。应用程序加载,按预期很好地向右旋转,并向我显示一个白屏,而不是我真正的 groovy UIImageView 子视图...? 您仍应将 self 更改为 self.view,因为您希望将子视图添加到视图控制器的视图而不是视图控制器的视图中。如果我更改为 [viewController addSubview:newView];在我的项目中,然后 Xcode 给了我:/Users/mz/Dev/Working/BlurApp/Classes/BlurAppAppDelegate.m:22: 警告:'BlurAppViewController' 可能不会响应'-addSubview:' 因为你没有看到它,也许您的视图控制器被定义为 UIView *?【参考方案2】:

视图控制器不是视图;它们是控制(拥有和管理)视图的控制器。尝试将视图控制器的视图作为所需的父级传递。

【讨论】:

以上是关于在不使用 IB 的情况下添加 UIImageView 作为 UIViewController 的子视图的主要内容,如果未能解决你的问题,请参考以下文章

如何在不通过 Interface Builder 获取 UIButton 类的背景的情况下添加图像?

Swift:以编程方式添加视图时,UIScrollView 的可滚动内容大小不明确,而不使用 IB

如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar?

Xcode UIViewController 到 customUIViewController 没有 IB

如何在不使用“+”运算符的情况下添加两个变量? [复制]

如何在不使用 InterfaceBuilder 的情况下将 UISwitch(切换开关)添加到 UIToolBar