如何在按钮点击上实现segue?

时间:2014-10-13 11:04:34

标签: ios objective-c uinavigationcontroller segue crash

我正在构建一个iOS应用程序。我已经在我的应用程序中实现了Facebook和Twitter集成。

我在viewcontroller中遇到问题我有按钮Next并实现了push segue 在该按钮上进入下一个视图,但是当我点击“下一步”按钮并出现错误时,我的应用程序崩溃了。

错误:因未捕获的异常终止应用程序' NSGenericException',原因:'无法找到segue' nextSport'的导航控制器。 Push segues只能在源控制器由UINavigationController实例管理时使用。'

以下是故事板的屏幕截图:

上一张图片: enter image description here

目前(新)图片已添加:

enter image description here

这是我的代码:

            - (IBAction)fbLogin:(id)sender {
                   [FBSession openActiveSessionWithReadPermissions:@[@"email",@"user_location",@"user_birthday",@"user_hometown"]
                                   allowLoginUI:YES
                              completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {

                                  switch (state) {
                                      case FBSessionStateOpen:
                                          [[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) {

                                              if (error) {

                                                  NSLog(@"error:%@",error);


                                              }
                                              else
                                              {
                                                  // retrive user's details at here as shown below


                                                  [[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *FBuser, NSError *error) {
                                                      if (error) {
                                                          // Handle error
                                                      }

                                                      else {
                                                          NSString *userName = [FBuser name];
                                                          NSLog(@"username===%@",userName);
                                                           NSLog(@"sesseion=%@",session);
                                                                                                                    }
                                                  }];

                                                  NSLog(@"FB user first name:%@",user.first_name);
                                                  userName=user.first_name;
                                                  NSLog(@"FB user last name:%@",user.last_name);
                                                  NSLog(@"FB user birthday:%@",user.birthday);
                                                  NSLog(@"FB user location:%@",user.location);
                                                  NSLog(@"FB user username:%@",user.username);
                                                  NSLog(@"FB user gender:%@",[user objectForKey:@"gender"]);
                                                  NSLog(@"email id:%@",[user objectForKey:@"email"]);
                                                  NSLog(@"location:%@", [NSString stringWithFormat:@"Location: %@\n\n",
                                                                         user.location[@"name"]]);
                                                  userImageURL = [NSString stringWithFormat:@"https://graph.facebook.com/%@/picture?type=large", [user objectID]];
                                                  NSLog(@"image=%@",userImageURL);

                                               }
                                              [self performSegueWithIdentifier:@"afterLogin" sender:nil];
                                          }];
                                          break;
                                          }
                                } ];
                        }

2 个答案:

答案 0 :(得分:2)

您正在推送UINavigationController,但正在执行推送的viewController也应位于UINavigationController内。由于错误表明没有UINavigationController执行segue&#39; nextSport#39;

答案 1 :(得分:1)

您应该在图像中移动第二个(导航控制器)和第三个(具有下一个按钮的控制器视图)视图控制器的位置,因为当您单击下一个按钮时,没有导航控制器可供您执行推。