iOS子视图小部件连接到多个控制器

时间:2012-12-07 15:44:39

标签: objective-c ios cocoa-touch

所以,我想创建一个可重用的小部件作为xib和子视图,它可以出现在一定数量的特定屏幕上。这个小部件将有三个按钮,每个按钮都有一个Action。

我希望能够在多个viewcontrollers上处理这些操作。

所以说ViewControllerA,ViewControllerD和ViewControllerF可以按照自己的方式处理三个按钮事件。

我已经创建了nib文件。如何将其导入特定的viewcontrollers,然后如何连接这些事件?

编辑:我知道我可以通过视图控制器设置插座,但Apple表示UIViewController仅用于全屏视图,而我的小部件只占据了屏幕的一小部分。 /强>

2 个答案:

答案 0 :(得分:1)

你做得很对。有一点是,在iOS中,它不是小部件。它是UIView

(抱歉我的代码中可能有任何拼写错误。我已经在StackOverflow中写了自己的文章)

按照以下步骤完成..

1)为视图创建xib后,您需要拥有UIView个子类文件。例如,您的xib名称喜欢此CustomView.xib表示然后创建像CustomView.m和CustomView.h

这样的文件

2)在CustomView.xib中,您需要将fileOwner设为CustomView.h

3)在您的CustomView.m文件中,会有一个类似initWithFrame:的方法在该方法中,您需要像这样加载xib文件

NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomView" owner:self options:0];
UIView *currentView = [topLevelObjects objectAtIndex:0];
[self addSubView:currentView];

4)几乎结束了。在任何视图控制器中,您都可以使用此xib,如

CustomView *newSubView = [[CustomView alloc]initWithFrame:CGRectMake(0,0,55,67)];
[self.view addSubView:newSubView];

就是这样......继续..

答案 1 :(得分:0)

您已创建了一个nib文件,但请确保您还创建了.h和.m文件,该文件将成为该nib文件的控制器。您将不得不查找如何实现委托方法,其他视图控制器可以以自己的方式捕获和操作。这是一个很棒的教程,可以帮助您开始使用自定义委托制作自定义类:Link