在时间间隔IOS 7之后,将当前视图控制器关闭回主视图控制器

时间:2014-03-06 05:26:27

标签: ios iphone objective-c uiviewcontroller

嗨,在我的应用程序中,我将图像从我的设备上传到服务器,因为一切正常,但现在我遇到了一些问题。上传后,必须在上传图像后自动返回主视图控制器。它不工作请告诉我该怎么做。

上传编码。

    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];
  }

上传后我想回到我的主视图控制器,请告诉我这是正确的方法。是否有其他方法可以完成。

感谢。

2 个答案:

答案 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];}];

}