ios - 从connectionDidFinishLoading推送到新的ViewController

标签 ios

是否可以从 ConnectionDidFinishLoading 推送到新的 View Controller ?

我有以下内容,它执行 ConnectionDidFinishLoading 但不会推送到新的 View Controller 。

-(void)connectionWithURLString:(NSMutableArray *)urlString
{
    NSDate *now =  [NSDate date];
    int userID = [[clientDataStruct.clientData objectForKey:@"number"] intValue];
    NSDate *date = self.datePicker.date;
  // NSLog(@"obj: %@", urlString);

    NSString *extrString = [NSString stringWithFormat:@", customerdetails:{customer_id = %d, job_date = %@, date_created = %@}",userID,date, now];

    NSString *post = [NSString stringWithFormat:@"json=quote:{%@%@}", urlString, extrString ];

     NSLog(@"post: %@", post);
    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:NO];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString *value = [defaults objectForKey:@"value"];

    NSString *jsonUrl = [NSString stringWithFormat:@"xxx?task=add_quote&user_id=%@&customer_id=%@",value, [clientDataStruct.clientData valueForKey:@"number"]];

    [request setURL:[NSURL URLWithString:jsonUrl]];
    [request setHTTPMethod:@"POST"];
    [request setHTTPBody:postData];

    NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];



    if (!connection)
        NSLog(@"Connection failed!");
}

- (void)Success
{

        UIStoryboard *subVc = [UIStoryboard storyboardWithName:@"MainStoryboard_iPad" bundle:nil];
        UserTableView *userTable = [subVc instantiateViewControllerWithIdentifier:@"UserTableView"];

        userTable.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
        [self.navigationController pushViewController:userTable animated:YES];

}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{

}


- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    NSLog(@"%@", error);
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    [self performSelectorOnMainThread:@selector(Success) withObject:Nil waitUntilDone:YES];
    NSLog(@"connectionDidFinishLoading%@", connection);
}

一切正常,并返回我的数据,并且数据被添加到 SQL 中。我的 NSLog 显示 ConnectionDidFinishLoading。但它不会推送到新的 View Controller 。

感谢您的帮助,我正在为这个问题摸不着头脑。

感谢 Fahim 的建议,让我可以进一步调试,导航 View 因返回的模型 Controller 而中断。将其更改为推送,一切正常

最佳答案

第 1 点

这不适用于您,因为您没有导航 Controller 。确保您有导航 Controller 。

第 2 点

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    [self performSelectorOnMainThread:@selector(LoginSuccess) withObject:Nil waitUntilDone:YES];
    NSLog(@"connectionDidFinishLoading%@", connection);
}

这是错误的。即使用户输入了错误的用户名或密码,您仍然允许用户登录。

检查您在connectionDidFinishLoading 中获得的响应,然后根据此响应进行转换。

例如如果你的后端有 PHP,你的代码将是

sql query here to add data

if (data added) {
    echo "valid";
} else {
    echo "invalid";
}

现在在connectionDidFinishLoading中检查此响应并基于此进行转换

关于ios - 从connectionDidFinishLoading推送到新的ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18350518/

相关文章:

iOS Spritekit intersectsnode 不适用于 SKShapeNode

ios - 更改我的 NSString 中特定字符的字体系列

ios - 如何根据iOS设备定义PTM_RATIO

iphone - 后台运行

iphone - 如何为特定文件添加 ARC?

ios - UIActionSheet 应该从弹出窗口调用,但从主屏幕底部显示

ios - 显示黑屏的自定义 Segue 动画

ios - 当应用程序处于后台时获取推送通知数据 IOS

ios - uipageviewcontroller 中的 UITapGestureRecognizer

iphone - ABGroupAddMember 不适用于 iOS4 设备