LoSenTrad / LSTPopView

(重构开发中,swift版本同步进行)LSTPopView iOS万能弹窗 (QQ群:1045568246 微信:a_LSTKit)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

第一个XPopup中创建第二个XPopup经常出现异常

YXHTom opened this issue · comments

我在第一个XPopup的button按钮创建并显示第二个XPopup,但是经常出现崩溃。在“LSTPopView.m“文件的511行处,代码是“id obj = popViewArr[popViewArr.count-2];”。xcode的bug提示popViewArr这个数组下标越界

我通过performSelector延迟500ms创建第二个XPopup,bug出现的概率减少但是还会出现

@YXHTom 代码可以展示一下吗?

@YXHTom 或者私聊发我源码看看

-(void)XPopup_DeviceSettingPopView{

UINib *nib = [UINib nibWithNibName:@"DeviceSettingPopView" bundle:nil];
DeviceSettingPopView *view = [nib instantiateWithOwner:nil options:nil].firstObject;
view.layer.cornerRadius = 10;
view.layer.masksToBounds = YES;
[view initValue:mapType :isJapan :isSensor];

LSTPopView *popView = [LSTPopView initWithCustomView:view popStyle:LSTPopStyleSmoothFromTop dismissStyle:LSTDismissStyleSmoothToBottom];
LSTPopViewWK(popView)
popView.bgClickBlock = ^{
    [wk_popView dismiss];
};

// popView.isHideBg = YES;
view.modeBlock = ^(int mode,int value){
NSLog(@"mode=%d",mode);

    switch (mode) {
        case 0:

// 日本手
self->isJapan=true;
[self switchControlView];
break;
case 1:
// 美国手
self->isJapan=false;
[self switchControlView];
break;
case 2:
// 重力模式 是
self->isSensor=true;
[self->_rightJS set_isGravity:self->isSensor];
break;
case 3:
// 重力模式 否
self->isSensor=false;
[self->_rightJS set_isGravity:self->isSensor];
break;
case 4:
// 地图类型 标准
self->mapType=0;
[self->_mapView setMapType:MAMapTypeStandard];
break;
case 5:
// 地图类型 卫星
self->mapType=1;
[self->_mapView setMapType:MAMapTypeSatellite];
break;
case 6:
// 地图类型 混合
self->mapType=2;

            [self->_mapView setMapType:MAMapTypeNavi];
            break;
        case 7:

// 校准地磁
self->mControlData.MagCor= 1;

            [self performSelector:@selector(delayMagCor) withObject:nil afterDelay:1];
            break;
        case 8:

// 校准加速计
self->mControlData.LevelCor= 1;

            [self performSelector:@selector(delayLevelCor) withObject:nil afterDelay:1];
            break;
        case 9:

// 离线地图
{
UIViewController *detailViewController = [MAOfflineMapViewController sharedInstance];
[self.navigationController pushViewController:detailViewController animated:YES];
self.navigationController.navigationBar.hidden = NO;
[self.navigationController setNavigationBarHidden:NO animated:YES];

        }
            break;
        case 10:

// 找回

            break;
        case 11:

// 镜头方向
[self->mWiFiTool sendTcpData:SET_VIDEO_ROLLOVERS_COMMOND_REQ withData:NULL];
break;
case 12:
// SD卡信息

// [self->mWiFiTool sendTcpData:GET_SDCARD_INFO_COMMOND_REQ withData:NULL];
[self performSelector:@selector(init_XPopup_SearchSD) withObject:nil afterDelay:0.5];

            break;
        case 13:

// 弹出SD卡
// [self XPopup_UnLockView:6];
[self->mWiFiTool sendTcpData:MOUNT_SDCARD_COMMOND_REQ withData:NULL];

            break;
        case 14:

// 设备信息
[self->mWiFiTool sendTcpData:GET_DEVICE_INFO_COMMOND_REQ withData:NULL];
break;
case 15:
// 对频信息
{

               NSString*urlString=@"http://172.16.11.10/goform/http_getusersetting";
           //    1.创建manager
               AFHTTPSessionManager *manager =[AFHTTPSessionManager manager];
           //    发送数据格式
               manager.requestSerializer=[AFHTTPRequestSerializer serializer];
           //    接受数据格式
               manager.responseSerializer=[AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingMutableLeaves];
               manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];
               
               [manager GET:urlString parameters:nil headers:nil progress:^(NSProgress * _Nonnull downloadProgress) {
                       NSLog(@"%lli/%lli",downloadProgress.completedUnitCount,downloadProgress.totalUnitCount);
                   } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
                       NSLog(@"getApSSidInfo成功");
                      
                       
                       ApSSIDInfo* mApSSIDInfo=[ApSSIDInfo yy_modelWithJSON:responseObject];
                      
                       self->rssilimit=mApSSIDInfo.rssilimit;
                       NSLog(@"mApSSIDInfo--%d",self->rssilimit);
                       if([mApSSIDInfo.apssidgroup containsString:@"LGGO_GPS_"]){
                        
                           [self XPopup_UnLockView:8 msg:[mApSSIDInfo.apssidgroup componentsSeparatedByString:@","][0]];
                           
                       }else{
                           [self XPopup_UnLockView:9 msg:@"未配对"];
                       }
                       
                       
                   } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
                       NSLog(@"请求失败");
                       NSLog(@"error:%@",error.localizedDescription);
                   }];
           }
            break;
        
        case 16:

// 修改连接强度
self->isEditSSID = true;
[self getApSSidInfo:value];
break;

        case 17:

// 连接强度
[self getApSSidInfo:0];
break;
default:
break;
}

    [wk_popView dismiss];
};
self.popView_DeviceSettingPopView=popView;
[popView pop];

}

以上是第一个XPopup

//SD卡信息
-(void)init_XPopup_SearchSD{
if (self->mSDInfo !=nil) {
// dispatch_async(dispatch_get_main_queue(), ^{
UINib *nib = [UINib nibWithNibName:@"XPopup_SearchSD" bundle:nil];
XPopup_SearchSD *view = [nib instantiateWithOwner:nil options:nil].firstObject;

    [view setValue:self->mSDInfo.capacity :self->mSDInfo.free :self->mSDInfo.used :self->mSDInfo.type ];
    view.layer.cornerRadius = 10;
    view.layer.masksToBounds = YES;
    
    
    LSTPopView *popView = [LSTPopView initWithCustomView:view popStyle:LSTPopStyleSmoothFromTop dismissStyle:LSTDismissStyleSmoothToBottom];
    LSTPopViewWK(popView)
    popView.bgClickBlock = ^{
        [wk_popView dismiss];
    };
    self.popView_SearchSD=popView;
    [popView pop];

// });
}

@YXHTom 加我微信a_LSTKit 😔