UIButtons无法以编程方式创建UIView

时间:2013-04-29 17:48:35

标签: iphone ios objective-c

我有一个UIViewController我希望显示一个UIView呈现为菜单。此菜单上有几个按钮。我想在我的应用程序中重复使用此菜单的几个不同的位置,所以我想我会创建一个名为ViewFactory的类,其中有一个方法可以使用这些按钮返回UIView

在我的ViewController上,我调用此方法并获取返回的UIView并将其添加为子视图。

这很好用。我可以看到视图及其所有按钮,但按钮不响应任何触摸事件。不知道为什么会这样,并且很想知道我做错了什么。

以下是ViewFactoryClass的代码:

- (UIView *) addCloseRow
{
    // UIView container for everything else.
    UIView *navRow = [[UIView alloc] initWithFrame:CGRectMake(0,225,350,45)];

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.userInteractionEnabled = YES;

    [navRow addSubview:button];

    [button addTarget:self action:@selector(closeButtonTouchDownEvent) forControlEvents: UIControlEventTouchDown];
    navRow.userInteractionEnabled = YES;
    return navRow;
}

在我的主要NavigationController课程中,我就是这样打电话并获取UIView

ViewFactory *factory = [[ViewFactory alloc] init];
[self.navigationController.navigationBar addSubview:[factory MainNavigationUIView]];

同样,UIView显示但按钮从不响应任何内容。

1 个答案:

答案 0 :(得分:2)

您添加了包含ViewFactoryClass

目标和选择器的按钮

现在您正在创建实例并尝试从ViewFactory类调用操作。

您可以将方法更改为以下内容:

- (UIView *) addCloseRow : (id)object {
    ...
    [button addTarget:[object class] action:@selector(closeButtonTouchDownEvent) forControlEvents: UIControlEventTouchDown];
    ...
}