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

Objective c iOS子视图小部件连接到多个控制器,objective-c,ios,cocoa-touch,Objective C,Ios,Cocoa Touch,因此,我想创建一个可重用的小部件作为一个xib和子视图,它可以显示在一定数量的特定屏幕上。这个小部件将有三个按钮,每个按钮都有一个动作 我希望能够在多个ViewController上处理这些操作 因此,假设ViewControllerA、ViewControllerD和ViewControllerF可以以各自的方式处理这三个按钮事件 我已经创建了nib文件。如何将其导入特定的ViewController,然后如何连接这些事件 编辑:我知道我可以通过viewcontroller设置插座,但苹果表示

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

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

因此,假设ViewControllerA、ViewControllerD和ViewControllerF可以以各自的方式处理这三个按钮事件

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


编辑:我知道我可以通过viewcontroller设置插座,但苹果表示UIViewController仅用于全屏视图,而我的小部件只占据了屏幕的一小部分。

您已经创建了一个nib文件,但请确保您还创建了.h和.m文件,该文件将作为该nib文件的控制器。您必须了解如何实现委托方法,您的其他视图控制器可以以自己的方式捕获并执行委托方法。下面是一个很好的教程,可以帮助您开始使用自定义委托创建自定义类:

您已经创建了一个nib文件,但请确保您还创建了.h和.m文件,该文件将作为该nib文件的控制器。您必须了解如何实现委托方法,您的其他视图控制器可以以自己的方式捕获并执行委托方法。下面是一个很好的教程,可以帮助您开始使用自定义委托创建自定义类:

您做得很正确。有一点是,在
iOS
中,它不是widget,而是
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];

就这样。。继续..

你做得对。有一点是,在
iOS
中,它不是widget,而是
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];

就这样。。继续..

Hi Kris,苹果公司在其指南中指出UIViewController仅适用于全屏。由于小部件是屏幕上的一个小项目,因此它不必具有UIViewController实现。你是说我通过outlet访问项目的唯一方法是使用ViewController吗?谢谢-AllisonNo您也可以使用UIView,只需创建一个UIView子类并实现一些自定义委托方法,正如我提供的链接所示。嗨,克里斯,苹果公司在其指南中声明UIViewController仅适用于全屏。由于小部件是屏幕上的一个小项目,因此它不必具有UIViewController实现。你是说我通过outlet访问项目的唯一方法是使用ViewController吗?谢谢-AllisonNo您也可以使用UIView,只需创建UIView子类并实现一些自定义委托方法,正如我提供的链接所示。