diff --git a/ios/sdk/WeexSDK/Sources/Module/WXModalUIModule.m b/ios/sdk/WeexSDK/Sources/Module/WXModalUIModule.m index 0c9031a323..ca12b330a1 100644 --- a/ios/sdk/WeexSDK/Sources/Module/WXModalUIModule.m +++ b/ios/sdk/WeexSDK/Sources/Module/WXModalUIModule.m @@ -35,6 +35,7 @@ @interface WXToastInfo : NSObject @property (nonatomic, strong) UIView *toastView; @property (nonatomic, weak) UIView *superView; +@property (nonatomic, weak) WXSDKInstance *instance; @property (nonatomic, assign) double duration; @end @@ -135,6 +136,7 @@ - (void)toast:(NSString *)message duration:(double)duration } UIView *toastView = [self toastViewForMessage:message superView:superView]; WXToastInfo *info = [WXToastInfo new]; + info.instance = self.weexInstance; info.toastView = toastView; info.superView = superView; info.duration = duration; @@ -228,6 +230,15 @@ - (void)showToast:(UIView *)toastView superView:(UIView *)superView duration:(do NSMutableArray *queue = [WXToastManager sharedManager].toastQueue; if (queue.count > 0) { [queue removeObjectAtIndex:0]; + + // remove invalid toasts + for (NSInteger i = [queue count] - 1; i >= 0; i --) { + WXToastInfo *info = queue[i]; + if (info.instance == nil) { + [queue removeObjectAtIndex:i]; + } + } + if (queue.count > 0) { WXToastInfo *info = [queue firstObject]; [weakSelf showToast:info.toastView superView:info.superView duration:info.duration];