【发布时间】:2018-04-20 05:54:02
【问题描述】:
这是我为在navigationBar 上显示activityIndicator 而编写的代码。
在我的每个视图的项目中,加载器都显示它在屏幕中间或网络activityIndicator 或navigation 上的加载器上运行良好。
但是当我尝试调用下面的 post 方法时,activityIndicator 没有显示(仅在此方法中它不起作用。)
我尝试了很多以编程方式编写和使用storyboard的方法。
场景一:不输入回复内容/消息,点击提交按钮,就会出现activityIndicator。
场景 2:如果我输入了任何回复内容/消息,那么 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" );
}
}
}
所以这就是我面临的问题。 出了什么问题?有什么解决办法吗?
【问题讨论】:
-
您发布了一段很长的代码,请您具体说明您遇到的问题,以便这里的人可以轻松帮助您。
-
你能在@try方法开始的地方设置activityIndicator吗?它应该可以工作。
-
调用后 - (IBAction)submitButtonClicked:(id)sender 这个方法,活动指示器不显示
-
@RB1509 我会检查的。
-
试试Debug View Hierarchy,看看加载器是否存在。
标签: ios objective-c loader uiactivityindicatorview activity-indicator