0

iOS 5 添加了一个不错的功能,允许您嵌套 UIViewControllers。使用这种模式,我很容易创建自定义警报视图——我创建了一个半透明视图来使屏幕变暗,并创建了一个自定义视图,其中包含一些我可以与之交互的小部件。我将 VC 添加为希望在其中显示的 VC 的子项,然后将其视图添加为子视图,并制作了一些动画以将其显示在屏幕上。

不幸的是,我需要支持 iOS 4.3。可以做这样的事情,还是我必须直接从我想在其中显示它的 VC 管理我的“警报”?

更多信息

因此,如果我在文件所有者为“TapView”且子视图为 UIButton 的 nib 中创建自定义视图。我将 UIButton 操作绑定到 TapView 中的 IBAction。

现在在我的 MainControllerView 中,我简单地添加 TapView:

TapView *tapView = [[TapView alloc] init];
[[self view] addSubview:tapView];

我看到了我的 TapView,但我无法与它上面的 UIButton 交互,并且可以与隐藏在它后面的 MainControllerView 上的 UIButton 交互。出于某种原因,我不知道我错过了什么......

4

2 回答 2

0

不确定这是否有帮助,但是,在我需要对潜在的多个控制器进行更多控制的情况下,我实现了一个模式,其中我有一个“主”控制器对象(不需要是 UIViewController 的后代),它实现一个委托协议(在它自己的文件中单独声明),然后让我需要挂钩的任何其他控制器将该类型的对象声明为委托,并且主机可以做任何它需要做的事情来响应来自与代表一起的控制器,在您需要的任何时候;在您的情况下,显示警报并充当其代表来处理按钮选择。我发现这种方法非常有效、简单且通常更清洁。YMMV ;-)

于 2012-09-05T19:29:15.387 回答
0

注册。您的第二个查询,您尝试使用 nib 创建自定义视图。不要更改 FileOwner 类型,而是为顶级视图对象的类属性设置“TapView”。

完成此操作后,您在建立联系时可能会遇到困难。为此,只需手动选择 TapView 文件进行连接。

此外,要加载视图,您需要加载其 nib 文件。您可以为此在 TapView 类中创建一个类级别的辅助方法,如下所示

+(TapView *) getInstance
{
    NSArray *bundle = [[NSBundle mainBundle] loadNibNamed:@"TapView" owner:self options:nil];

    TapView *view;
    for (id object in bundle) {
        if ([object isKindOfClass:[TapView class]]) {
            view = (TapView *) object;

            break;
        }
    }

    return view;
}

现在,您可以像这样查看对象

TapView *tapView = [TapView getInstance];
于 2013-06-05T09:54:41.413 回答