Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone Xcode Objective-C Segue“;“正在进行演示”;_Iphone_Ios_Xcode_Segue_Afnetworking - Fatal编程技术网

Iphone Xcode Objective-C Segue“;“正在进行演示”;

Iphone Xcode Objective-C Segue“;“正在进行演示”;,iphone,ios,xcode,segue,afnetworking,Iphone,Ios,Xcode,Segue,Afnetworking,我正在尝试开发一个应用程序,允许用户通过AFNetworking登录。我已经正确设置了数据库,除了用户第一次登录外,一切都正常 我所拥有的是非常简单的: [[API sharedInstance] commandWithParams:params onCompletion:^(NSDictionary *json) { //result returned

我正在尝试开发一个应用程序,允许用户通过AFNetworking登录。我已经正确设置了数据库,除了用户第一次登录外,一切都正常

我所拥有的是非常简单的:

[[API sharedInstance] commandWithParams:params
                               onCompletion:^(NSDictionary *json) {
                                   //result returned

                                   NSDictionary* res = [[json objectForKey:@"result"] objectAtIndex:0];

                                   if ([json objectForKey:@"error"]==nil && [[res objectForKey:@"UserID"] intValue]>0) {
                                       [[API sharedInstance] setUser: res];
                                       [self performSegueWithIdentifier:@"Login" sender:self];
                                   } else {
                                       //error
                                       [UIAlertView title:@"Error" withMessage:[json objectForKey:@"error"]];
                                   }

                               }];
基本上,上面的代码返回用户登录详细信息的结果,只有在登录详细信息匹配时才会成功。正如您在上面看到的,我清楚地将用户设置为sharedInstance,在整个应用程序中使用。设置用户后,我尝试执行segue,因为登录按钮应该这样做

segue确实出现了,程序也可以运行,但有两个问题我无法解决,我花了几个小时试图解决它。首先,我在Xcode的输出窗口中得到消息:

警告:尝试在登录时在LoginVC上显示UITabBarController 演示正在进行中

其次,为了测试用户设置是否正确,在配置文件屏幕(第一个屏幕)上有一个标签,其文本设置为:

NSString stringWithFormat:@"Welcome %@",[[[API sharedInstance] user] objectForKey:@"username"]];
无论用户名是否实际显示或显示(null),这都是一个命中或未命中的结果,如图所示:

您还可以看到我在那里制作的一个按钮,用于将用户的值打印到输出窗口。即使消息是“Welcome(null)”,我按下按钮,所有的值都正确,所以我不确定为什么字符串有时表示null

以下是关于我遇到的问题的故事板设置:


如果有人能在这方面帮助我,我将不胜感激。

正如您正确诊断的那样,问题肯定是某些奇怪的和/或重复的序列调用。查看您的项目,问题在于您的“登录”按钮既有一个
iAction
方法,也有一个从该登录屏幕到下一个控制器(选项卡栏控制器)的序列:

这是一个问题,因为当您按下按钮时会触发segue,但会由您的
-(iAction)登录名:(id)发送者
再次触发

因为您有一个
iAction
,所以该序列不应该从按钮到下一个控制器,而是从控制器本身。因此,删除现有的
登录
从按钮切换到下一个屏幕,并从控制器本身重新创建:


为新的segue赋予“Login”标识符,现在您的“Login”按钮将不会自动执行segue本身,而是让
iAction
执行其工作,并根据需要手动
performsguewithidentifier

在以下时间发送/触发事件:
Did End on Exit

将其连接到调用
performsguewithidentifier
的方法


这样它就不会触发两次。

您是否在
prepareforsgue
中配置目标控制器?也许您可以向我们展示目标控制器的
prepareForSegue
以及
viewDidLoad
的相关部分。嗨,Rob。我的“prepareForSegue”是:
-(void)prepareForSegue:(UIStoryboardSegue*)segue发送方:(id)发送方{if([segue.identifier IsequalString:@“SignUp”]){SignUpVC*SignUpVC=segue.destinationViewController;SignUpVC.delegate=self;}
和配置文件控制器的“viewdiload”(在选项卡栏控制器中查看的第一个控制器是:
-(void)viewDidLoad{[super viewDidLoad];//加载视图后执行任何其他设置。self.welcomeMsg.text=[NSString stringWithFormat:@“Welcome%@”,[[API sharedInstance]用户]objectForKey:@“username”];}
谢谢。这消除了这种现象的常见根源,即人们在调用
viewDidLoad
之前试图访问目标视图的控件。我想下一步是确定was是否正在生成
nil
值,是否为
[API sharedInstance]
用户的
方法
[API sharedInstance]
,或者
用户名的
NSDictionary
条目是
nil
这一事实。我倾向于为这三种情况中的每一种设置调试消息,以确定
nil
值的来源,并且您可以从中缩小问题的范围。另外,您的
用户
对象如何e> API
object defined?当然不是
weak
,对吧?我检查了用户并将其设置为strong。我将其设置为viewDidLoad:
CFShow((u-bridge-CFTypeRef)([API-sharedInstance]);CFShow(u-bridge-CFTypeRef)([API-sharedInstance]user]);NSLog(@“%@,[[API-sharedInstance]user]objectForKey:@“username”);self.welcomeMsg.text=[NSString stringWithFormat:@“Welcome%@”,[[[API sharedInstance]用户]objectForKey:@“username”];
回答和解释非常好!对我来说非常有用!