먼저 IOS 또는 AFNetworking이 아닌 내 자신의 코드가 설정되는 것과 관련하여 문제가 있다고 말하고 싶습니다.IOS 7 AFNetworking 2.0보기 새로 고침 문제
서버의 업데이트 된 JSON 응답 개체가 수신되고 있어도보기가 즉시 새로 고침되지 않는 예를 하나 표시 할 예정입니다.
첫 번째보기에서 2 개의보기가 사용되고 있으며 아래의 단추를 누르면 첫 번째보기에 표시 될 이미지를 업로드 할 수있는 두 번째보기로 이동합니다.
- (IBAction)editImage:(id)sender {
UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil];
TDUserProfileViewController * vc = [storyboard instantiateViewControllerWithIdentifier:@"TDUserProfileImageEditViewController"];
[self.navigationController pushViewController:vc animated:YES];
}
다음은 새 데이터를 서버에 업로드 한 다음 서버의 이미지 주소와 관련된 새로운 데이터를 얻는 코드입니다. HUD를가 중지하고보기에 다시 버튼을 칠 때 첫 번째보기에서 새로 업로드 된 이미지가 있어야 가정된다 이상
- (IBAction)dataSubmitToServer{
// NSLog(@"photo: %@", self.photoData);
NSString * userID = [[NSUserDefaults standardUserDefaults] objectForKey:USERID];
//make the call to the web API
NSString* command = @"setProfilePhoto";
self.params =[NSMutableDictionary dictionaryWithObjectsAndKeys:command, @"command", userID, @"userid", nil];
//////////////////
NSLog(@"%@", self.params);
self.photoName = @"newname.png";
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager POST:BaseURLString parameters:self.params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:UIImageJPEGRepresentation(self.userPhoto.image, 1)
name:@"image"
fileName:self.photoName
mimeType:@"image/jpeg"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", [error localizedDescription]);
[TDPublicFunctions showDefaultAlert:@"Error" body:[error description]];
}];
[self getNewProfileData];
[[NSUserDefaults standardUserDefaults] synchronize];
}
-(void)getNewProfileData{
/*start getting new data for profile pic and status message*/
NSString* command = @"displayProfileData";
NSString * userID = [[NSUserDefaults standardUserDefaults] objectForKey:USERID];
NSMutableDictionary* params =[NSMutableDictionary dictionaryWithObjectsAndKeys:command, @"command", userID,@"userid", nil];
NSLog(@"%@", params);
[SVProgressHUD showWithStatus:@"Loading..." maskType:SVProgressHUDMaskTypeBlack];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:BaseURLString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
[SVProgressHUD dismiss];
if([responseObject objectForKey:@"error"])
{
[[[UIAlertView alloc] initWithTitle:@"Data Retrieval Error" message:[responseObject description] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil] show];
}
else
{
NSString * profilePhoto = [[[responseObject objectForKey:@"result"] objectAtIndex:0] objectForKey:@"profile_picture"];
NSString * status = [[[responseObject objectForKey:@"result"] objectAtIndex:0] objectForKey:@"status"];
NSString * statusMsg = [[[responseObject objectForKey:@"result"] objectAtIndex:0] objectForKey:@"status_message"];
if(profilePhoto && ![profilePhoto isKindOfClass:[NSNull class]])
[[NSUserDefaults standardUserDefaults] setObject:profilePhoto forKey:PROFILE_PHOTO];
if(status && ![status isKindOfClass:[NSNull class]])
[[NSUserDefaults standardUserDefaults] setObject:status forKey:STATUS];
if(statusMsg && ![statusMsg isKindOfClass:[NSNull class]])
[[NSUserDefaults standardUserDefaults] setObject:statusMsg forKey:STATUS_MESSAGE];
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
//end of getting data for status message and profile pic
}
지금 한번 위의 과정이다. 업로드 (BOOL) 이미지 후 {
NSString * profPic = [[NSUserDefaults standardUserDefaults] objectForKey:PROFILE_PHOTO];
NSLog(@"profilepic: %@", profPic);
// NSString* status = [[NSUserDefaults standardUserDefaults] objectForKey:STATUS];
NSString * statusMsg = [[NSUserDefaults standardUserDefaults] objectForKey:STATUS_MESSAGE];
if(profPic)
[photo loadIconForProduct:profPic];
if(statusMsg)
statusMsgView.text = statusMsg;
//self.view=nil;
//[self viewDidLoad];
[self getFriendsList];
[photo setNeedsDisplay];
[self.view setNeedsDisplay];
}
애니메이션 : (무효) viewWillAppear - : 아래의 코드는 내가 새로 고침 이미지와보기를 얻기 위해 노력 많은 것들의 마지막 처음으로 이미지를 업로드 할 때 작동하지만 사용자가 editImage 버튼을 두 번 눌러 다른 이미지를 업로드하면 작동하지 않습니다.
무엇이 잘못 되었습니까? 제가 제공 할 수있는 다른 것이 있다면 알려주십시오.
감사합니다.
그냥 내 두 센트. 이미지 URL이 새로운 것으로 간주 될 수 있도록 '... image.jpg? rand = 6547'과 같은 URL 끝에 임의의 숫자를 추가하십시오. – Tamil
시도해보십시오. 로그 아웃 한 후 다시 로그인하여 새 이미지를 확인하십시오. 이 문제를 해결하기 위해 다른 사람이 제안하지 않을 사항이 있습니까? – user3007683