iOS: Activity 调用时未显示指示器 post API

iOS: Activity Indicator is not showing while calling post API

这是我编写的用于在 navigationBar 上显示 activityIndicator 的代码。

在我的项目中的每个视图中,加载程序都显示它在屏幕中间或网络 activityIndicatornavigation 上的加载程序正常工作。

但是当我尝试调用下面的 post 方法时,activityIndicator 没有显示(仅在此方法中它不起作用。)

我尝试了很多编程方式和使用 storyboard

场景 1: 不输入回复 content/message 如果点击提交按钮然后 activityIndicator 会出现。

场景 2: 如果我输入任何回复 content/message 那么 activityIndicator 将不会显示。

你可以看看这个视频:https://youtu.be/G_UZ_gLRlr8

 @interface ViewController ()
    {
       UIActivityIndicatorView *activityIndicator;
    }
    @end

- (void)viewDidLoad {
        [super viewDidLoad];


            //adding activity indicator on the navigation bar

            activityIndicator =
            [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0, 0, 20, 20)];

            activityIndicator.color=[UIColor blackColor];

            UIBarButtonItem * barButton =
            [[UIBarButtonItem alloc] initWithCustomView:activityIndicator];

            // Set to Left or Right
            [[self navigationItem] setRightBarButtonItem:barButton];

    }

- (IBAction)submitButtonClicked:(id)sender {


    [activityIndicator startAnimating];



    if([_messageTextView.text isEqualToString:@""] || [_messageTextView.text length]==0)
    {
        [utils showAlertWithMessage:@"Enter the reply content.It can not be empty." sendViewController:self];

    }else
    { 
        [self replyTicketMethodCall]; 
    }
}

-(void)replyTicketMethodCall
{

    if ([[Reachability reachabilityForInternetConnection]currentReachabilityStatus]==NotReachable)
    {
    //connection unavailable
    //[utils showAlertWithMessage:NO_INTERNET sendViewController:self];
    [RKDropdownAlert title:APP_NAME message:NO_INTERNET backgroundColor:[UIColor hx_colorWithHexRGBAString:FAILURE_COLOR] textColor:[UIColor whiteColor]];

}else{


    @try{




        NSString *urlString=[NSString stringWithFormat:@"%@helpdesk/reply?token=%@",[userDefaults objectForKey:@"companyURL"],[userDefaults objectForKey:@"token"]];

        NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
        [request setURL:[NSURL URLWithString:urlString]];
        [request setHTTPMethod:@"POST"];

        NSMutableData *body = [NSMutableData data];

        NSString *boundary = @"---------------------------14737809831466499882746641449";
        NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
        [request addValue:contentType forHTTPHeaderField:@"Content-Type"];

        // attachment parameter
        [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"media_attachment[]\"; filename=\"%@\"\r\n", file123] dataUsingEncoding:NSUTF8StringEncoding]];

        [body appendData:[[NSString stringWithFormat:@"Content-Type: %@\r\n\r\n", typeMime] dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[NSData dataWithData:attachNSData]];
        [body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];


        // reply content parameter
        [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"reply_content\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[_messageTextView.text dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];


        NSString * tickerId=[NSString stringWithFormat:@"%@",globalVariables.iD];
        // ticket id parameter
        [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"ticket_id\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[tickerId dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];

        // close form
        [body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];

        // set request body
        [request setHTTPBody:body];

        NSLog(@"Request is : %@",request);

        //return and test
        NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
        NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

        NSLog(@"ReturnString : %@", returnString);

        NSError *error=nil;
        NSDictionary *jsonData=[NSJSONSerialization JSONObjectWithData:returnData options:kNilOptions error:&error];
        if (error) {
            return;
        }

        NSLog(@"Dictionary is : %@",jsonData);
        // "message": "Successfully replied"



        if ([jsonData objectForKey:@"message"]){

            NSString * msg=[jsonData objectForKey:@"message"];


            if([msg isEqualToString:@"Successfully replied"])
            {

                [RKDropdownAlert title:NSLocalizedString(@"success", nil) message:NSLocalizedString(@"Posted your reply.", nil)backgroundColor:[UIColor hx_colorWithHexRGBAString:SUCCESS_COLOR] textColor:[UIColor whiteColor]];

                [[NSNotificationCenter defaultCenter] postNotificationName:@"reload_data" object:self];

                [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:1] animated:YES];

            }
            else if ([jsonData objectForKey:@"message"])
            {

                NSString *str=[jsonData objectForKey:@"message"];

                if([str isEqualToString:@"Token expired"])
                {
                    MyWebservices *web=[[MyWebservices alloc]init];
                    [web refreshToken];
                    [self replyTicketMethodCall];

                }
            }
            else
            {
                [self->utils showAlertWithMessage:@"Something went wrong. Please try again." sendViewController:self];
            }
            NSLog(@"Thread-Ticket-Reply-closed");


        }

    }@catch (NSException *exception)
    {
        [utils showAlertWithMessage:exception.name sendViewController:self];
        NSLog( @"Name: %@", exception.name);
        NSLog( @"Reason: %@", exception.reason );
        return;
    }
    @finally
    {
        NSLog( @" I am in replytTicket method in TicketDetail ViewController" );

    }

}

}

这就是我面临的问题。 出了什么问题?有什么解决办法吗?

使用这个方法

 [self performSelector:@selector(replyTicketMethodCall) withObject:self afterDelay:5.0];

而不是这个

[self replyTicketMethodCall];