协议&使用ContainerView时委派

时间:2014-06-12 18:02:28

标签: ios objective-c delegates protocols

我有一个带有ContainerView的UIViewController(root),它以编程方式加载一个nib:

UIView *containerView = [[[NSBundle mainBundle] loadNibNamed:@"KeyboardView" 
    owner:self options:nil] objectAtIndex:0];

[self.view addSubview:containerView];

我有一个类文件(.h和.m)挂钩到这个.xib文件(UIView)。
我的.xib文件(UIView)有一个按钮和一个动作。

当调用并执行此操作时,我删除了我的.xib文件。

我的ViewController.m(root)如何处理removeFromParent my nib文件的确切时间?

我尝试使用Protocol&代表但失败了。
我试着在prepareForSegue方法上设置delegate = self但是没有成功。

我的问题是:
我的UIViewController(root)以编程方式调用我的键盘(.xib) 键盘中的所有操作都由连接到.xib的类处理 完成操作后,我删除了.nib文件(我模拟了一个解雇)。

ViewController.m(root)中的方法如何知道我解除了我的.xib文件?

1 个答案:

答案 0 :(得分:0)

我不确定你在这做什么,但我想我理解你的问题。

在界面中,为键盘视图声明一个弱属性。

@property (weak, nonatomic) UIView *keyboardView;

然后当你加载键盘

UIView *containerView = [[[NSBundle mainBundle] loadNibNamed:@"KeyboardView" 
    owner:self options:nil] objectAtIndex:0];

[self.view addSubview:containerView];
self.keyboardView = containerView;

现在您可以测试self.keyboardView != nil以了解键盘是否已加载。

这是有效的,因为keyboardView很弱,所以当它从父视图中移除时,该属性将设置为nil


注意:不需要任何协议或代表。