gpt4 book ai didi

iphone - iOS开发中如何处理自定义事件?

转载 作者:行者123 更新时间:2023-12-03 16:48:23 26 4
gpt4 key购买 nike

我们正在开发一个使用一些自定义 View 的项目。我们有以下层次结构:

UIViewController -> UIScrollView(自定义子类) -> UIView(自定义子类)

我们正在展示动态生成的按钮网格。当用户点击属于自定义 ScrollView 的 UIView 之一时,我们会触发一个如下所示的方法:

- (void)handleTapFrom:(UITapGestureRecognizer *)recognizer {
[[self superview] itemSelected:self];
}

本例中的 super View 是我们自定义的 UIScrollView 子类。从这里我们触发另一个方法:

- (void) itemSelected: (id)selectedItem {
itemView *item = selectedItem;
[[self superview] initSliderViewForItemNamed:item.name];
item = nil;
}

现在事情就在这里发生了。我们想要触发 UIViewController 中的另一个方法来加载 View 层次结构顶部的新 View 。所以在 UIViewController 中我们有这个方法来测试是否成功:

- (void) initSliderViewForItemNamed:(NSString *)selectedItemName {
NSLog(@"Selected item was found! %@",selectedItemName);
}

但我们从未达到这一点,应用程序崩溃了。这是因为我们无法在这里引用 UIViewController。相反,我们引用 UIViewController 的 view 属性。所以我们实际的对象层次结构是:

UIViewController.view -> UIScrollView(自定义子类) -> UIView(自定义子类)

这让我想到两个问题。

  1. 我们如何从属于 Controller View 属性的 subview 中引用 UIViewController?
  2. 这个方法复杂吗?有一个更好的方法吗?我们应该将 UIViewController 指定为 UIScrollView 的自定义子类的委托(delegate)吗?

最佳答案

吉姆,你应该在你的自定义 uiview 子类上设置一个委托(delegate),并让你查看 Controller 作为它的委托(delegate)并符合你刚刚创建的协议(protocol),你会没事的(即: TableView 正在做什么)

关于iphone - iOS开发中如何处理自定义事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3252754/

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