gpt4 book ai didi

objective-c - 在自定义 View 中重现 tableView 委托(delegate)行为

转载 作者:行者123 更新时间:2023-11-28 22:49:24 24 4
gpt4 key购买 nike

我正在尝试开发一个模仿 UITableView 控件行为的控件。我定义了一个委托(delegate)协议(protocol)如下:

@protocol HPSChoiceDelegate

- (void)choiceView:(HPSChoice *)choiceView didSelectChoice:(NSNumber*)selectedIndex;

@end

用户可以点击主控件 View 中的 subview 。我有 TapGesture 识别器,可以在主控件 View 中触发方法。我像这样连接它们:

UITapGestureRecognizer *containerTap = 
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(didSelectChoice:)];

然后我在 View 中有一个方法尝试调用委托(delegate)中的正确方法。 View 中的方法如下所示:

-(void)didSelectChoice:(UITapGestureRecognizer*)sender
{
NSNumber* selectedIndex = [NSNumber numberWithInt:sender.view.tag];

[(id)self.delegate performSelector:@selector(didSelectChoice:) withObject:selectedIndex afterDelay:0.0f];
}

在委托(delegate) Controller 中,我定义了以下方法:

- (void)choiceView:(HPSChoice *)choiceView didSelectChoice:(NSNumber*)selectedChoice
{
NSLog(@"HPSFormController didSelectChoice:(HPSChoice*)choiceView tag = %@",[[choiceView class] description]);
}

全部编译,当我点击控件时,然后在 View 中调用 didSelectChoice,然后调用委托(delegate)中的方法。但是,委托(delegate)方法因以下错误而崩溃:

-[HPSFormController didSelectChoice:]: unrecognized selector sent to instance 0x29b4e0

我该如何解决这个问题?非常感谢。

最佳答案

方法崩溃是因为你在调用

didSelectChoice:

而你定义的方法是

choiceView:didSelectChoice:

我相信你可以通过调用来解决这个问题:

[(id)self.delegate performSelector:@selector(choiceView:didSelectChoice:) withObject:choiceView withObject:selectedIndex];

当然,您必须在 didSelectChoice: 方法中获取 choiceView。

关于objective-c - 在自定义 View 中重现 tableView 委托(delegate)行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12318207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com