Ios “之后”;popViewControllerAnimated“;方法调用第二个方法
我有导航控制器。在这个控制器的第二个视图中,我创建了一个后退按钮,该按钮的动作名为“后退”。在这个方法中,我调用了“popViewControllerAnimated”方法,问题是,在“popViewControllerAnimated”之后,我还有一些其他的动作,这些动作也在同一时间被调用,但是在“popViewControllerAnimated”之后,它们会显示给我,但我需要阻止它 当我按下按钮时:Ios “之后”;popViewControllerAnimated“;方法调用第二个方法,ios,uinavigationcontroller,Ios,Uinavigationcontroller,我有导航控制器。在这个控制器的第二个视图中,我创建了一个后退按钮,该按钮的动作名为“后退”。在这个方法中,我调用了“popViewControllerAnimated”方法,问题是,在“popViewControllerAnimated”之后,我还有一些其他的动作,这些动作也在同一时间被调用,但是在“popViewControllerAnimated”之后,它们会显示给我,但我需要阻止它 当我按下按钮时: - (void)back { [socketIO sendEvent:@"exi
- (void)back {
[socketIO sendEvent:@"exit" withData:nil]; // Send data to server
[self.navigationController popViewControllerAnimated:NO];
}
以及用于解析来自服务器的结果的委托:
- (void)socketIO:(SocketIO *)socket didReceiveEvent:(SocketIOPacket *)packet {
if ([packet.name isEqualToString:@"disconnect"]) {
NSLog(@"Exit"); // This code also works, but it works after "popViewControllerAnimated", but I want to block it.
}
}
方案:
但是如果我关闭了视图控制器,列表中的第4项在“popViewControllerAnimated”之后是如何工作的呢?如何修复此行为?能否将通信逻辑放在中心类(可能是单例)中?负责与后端进行通信。当它收到答复时,它会发送一个通知。某些类应该接收通知并添加新的视图控制器 类似于我在这篇帖子中的建议: ---编辑以回应评论--- 首先,我认为下面的类的名称与您试图解决的问题更相关是很重要的。我给它起了一个通用的名字,但我对我选择的名字不满意
@interface Communicator : NSObject
- (void) sendExit;
+ (Communication *) defaultCommunicator;
@end
在c
- (void)socketIO:(SocketIO *)socket didReceiveEvent:(SocketIOPacket *)packet {
if ([packet.name isEqualToString:@"disconnect"]) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"CommunicatorExit" object:boek];
}
}
侦听通知的好地方是在当前通知之前的视图控制器。我使用singleton,但我使用它连接服务器,但使用singleton的视图控制器并不舒服。或者你可以举一个例子来说明如何做到这一点?