我真正想做的是发送一个自定义事件“上链”。第一反应者拿起事件将处理它。这似乎是一个很常见的模式,但是我没有找到任何关于如何做到“iOS / Cocoa方式”的很好的解释。
由于响应者链正是我需要的,所以我想出了一个这样的解决方案:
// some event happened in my vIEw that // I want to turn into a custom event and pass it "up":UIResponder *responder = [self nextResponder];while (responder) { if ([responder conformstoprotocol:@protocol(ItemSelectedDelegate)]) { [responder itemSelected:someItem]; break; } responder = [responder nextResponder];}
这样做完美,但我有一种感觉,应该有其他方法来处理这个问题。以这种方式手动行走链似乎不是很好。
请注意,通知不是一个很好的解决方案,因为我只希望视图层次结构中的对象被涉及,通知是全局的。
在iOS中处理这个问题的最好办法是什么?
编辑:
我想要完成什么?
我有一个视图控制器,它有一个视图,它有子视图等…几个子视图是一个特定类型,显示数据库中的一个项目。当用户点击此视图时,应将信号发送到控制器以导航到该项目的详细页面。
处理tap的视图在视图层次结构中的主视图下方有几个级别。我必须告诉控制器(或在某些情况下,一个特定的子视图“上链”)项目被选中。
聆听通知将是一个选项,但我不喜欢这个解决方案,因为选择一个项目不是全局事件。它与当前视图控制器严格相关。
解决方法 你很近更标准的是这样的:@implementation NSResponder (MyVIEwController)- (voID)itemSelected:(ID)someItem{ [[self nextResponder] itemSelected:someItem];}@end
这通常是默认情况下事件如何传递给链。然后在右侧的控制器中,覆盖该方法,而不是采取自定义 *** 作。
这可能不是您想要实现的正确模式,但它是将响应者链上的消息传递到一个好方法。
总结以上是内存溢出为你收集整理的iphone – 走响应者链来传递自定义事件 这是错的吗全部内容,希望文章能够帮你解决iphone – 走响应者链来传递自定义事件 这是错的吗所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)