1

我有一个名为 MainViewController 的 UIViewController。我还有一个名为 ViewMaker 的课程。在 ViewMaker 类中,我有一个函数如下。

 -(UIView *)GetContentView
{
UIView *return_view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 500, 500)];

UIButton *done_button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
done_button.frame = CGRectMake(300, 300, 100, 50);
[done_button setTitle:@"Done" forState:UIControlStateNormal];
[return_view addSubview:done_button];
return return_view;
}

在上面的函数中,实际上我会添加更多的视图,比如文本视图、标签等。

在 MainViewController 类中,我按如下方式调用上述方法。

 -(void)CreateViews
 {   
 UIView *content_view = [[[ViewMaker alloc] init] GetContentView];
 [self.view addSubview:content_view];
 }

现在,我从 MainViewController 类中添加了一个带有完成按钮(以及其他组件,如文本视图、标签等)的视图。我的问题是为完成按钮添加目标功能。当我单击完成按钮时,我想根据从 ViewMaker 类返回的视图中的数据在 MainViewController 中执行一些操作(如添加一些视图)。我怎样才能做到这一点?提前致谢。

4

3 回答 3

1

我假设您的 ViewMaker 类与 PopupContentMaker 相同,

将此添加到您的完成按钮:

[done_button addTarget:self action:@selector(doSomething) forControlEvents:UIControlEventTouchUpInside];

在 PopupContentMaker 中:

- (void)doSomething{
if ([self.delegate respondsToSelector:@selector(handleDoneButtonTap)]) {
    [self.delegate performSelector:@selector(handleDoneButtonTap) withObject:self];
}

}

在 PopupContentMaker 中声明一个委托属性,并使 MainViewController 成为委托,

-(void)GetContentView
{   
PopContentMaker *pcm = [[PopupContentMaker alloc] init];

pcm.delegate = self;

[self.view addSubview:[pcm GetContentView]];

}

-(void)handleDoneButtonTap{
//Do action after done button
}
于 2013-11-04T17:58:42.923 回答
0

你可以试试:

[done_button addTarget: self
      action: @selector(buttonClickedMethod)
forControlEvents: UIControlEventTouchUpInside];

通过这种方式,您可以在按下按钮时调用自定义方法。

于 2013-11-04T17:57:34.067 回答
0

您可以将目标和操作作为参数传递给 getContentView 方法,也可以使用委托模式。

于 2013-11-04T17:58:13.347 回答