嗨,在我的应用程序中,我将图像从我的设备上传到服务器,因为一切正常,但现在我遇到了一些问题。上传后,必须在上传图像后自动返回主视图控制器。它不工作请告诉我该怎么做。
上传编码。
NSString *urlString = @"url";
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc]init]autorelease];
[request setURL:[NSURL URLWithString:urlString]] ;
[request setHTTPMethod:@"POST"];
NSString *boundary = @"---------------------------14737809831466499882746641449";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField:@"Content-Type"];
NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary]dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Disposition: form-data; name=\"userfile\"; filename=\".jpg\"\r\n"dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: application/octet-stream\r\n\r\n"dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imageData]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary]dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:body];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
NSLog(@"%@data",returnString);
**[self performSelector:@selector(dissMissViewController) withObject:self afterDelay:2.0f];**
驳回编码。
- (void)dissMissViewController
{
[self.navigationController popViewControllerAnimated:YES];
[self dismissViewControllerAnimated:YES completion:nil];
}
上传后我想回到我的主视图控制器,请告诉我这是正确的方法。是否有其他方法可以完成。
感谢。
答案 0 :(得分:0)
首先,您必须知道图片上传是否成功,并且在成功时您需要解雇并弹回主视图控制器,如下所示: -
-(void)dissMissViewController
{
[self dismissViewControllerAnimated:YES completion:^{
[self.navigationController popViewControllerAnimated:YES];}];
}
您还可以弹出特定的视图控制器,如: -
for (UIViewController *controller in [self.navigationController viewControllers])
{
if ([controller isKindOfClass:[yourviewcontroller class]])
{
[self.navigationController popToViewController:controller animated:YES];
break;
}
}
您还可以使用以下代码行来弹出rootviewcontroller: -
[self.navigationController popToRootViewControllerAnimated:YES]
注意:将此弹出代码用于DismissViewcontroller的完成块
答案 1 :(得分:0)
1st你应该使用异步方法,因为目前你正在主线程中。
使用Connection的委托方法将数据发送到服务器,
并使用Connection的委托方法connectionDidFinishLoading
获取已成功上传图像的通知。
或试试这个
- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
[self dismissViewControllerAnimated:YES completion:^{
[self.navigationController popViewControllerAnimated:YES];}];
}