将数据传递到本地html iOS webview
我试图在Facebook登录后从我的视图控制器传递到我的选项卡栏视图控制器,但它给了我以下错误: “NSInvalidArgumentException”,原因:“情节提要()不包含标识符为的视图控制器。” “仪表板视图控制器” 方法如下:将数据传递到本地html iOS webview,ios,xcode,cocoa-touch,uiviewcontroller,Ios,Xcode,Cocoa Touch,Uiviewcontroller,我试图在Facebook登录后从我的视图控制器传递到我的选项卡栏视图控制器,但它给了我以下错误: “NSInvalidArgumentException”,原因:“情节提要()不包含标识符为的视图控制器。” “仪表板视图控制器” 方法如下: - (void)loginViewFetchedUserInfo:(FBLoginView *)loginView user:(id<FBGraphUser>)user { NSS
- (void)loginViewFetchedUserInfo:(FBLoginView *)loginView
user:(id<FBGraphUser>)user {
NSString *userName = [user first_name];
NSString *userId = [user id];
dashBoardViewController *dashBoardViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"dashBoardViewController"];
dashBoardViewController.first_name = userName;
dashBoardViewController.id = userId;
[self presentModalViewController:dashBoardViewController animated:YES];
}
-(无效)loginView蚀刻教育信息:(FBLoginView*)loginView
用户:(id)用户{
NSString*userName=[用户名];
NSString*userId=[user id];
dashBoardViewController*dashBoardViewController=[self.storyboard实例化eviewController标识符:@“dashBoardViewController”];
dashBoardViewController.first_name=用户名;
dashBoardViewController.id=用户id;
[self-presentModalViewController:dashBoardViewController动画:是];
}
编辑
//
// ViewController.m
// LoginSampleFB
//
//
#import "ViewController.h"
#import "dashBoardViewController.h"
#import "BFPaperTabBarController.h"
#import <FacebookSDK/FacebookSDK.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.loginButton.delegate = self;
self.loginButton.readPermissions = @[@"public_profile", @"email", @"publish_actions",];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)loginViewFetchedUserInfo:(FBLoginView *)loginView
user:(id<FBGraphUser>)user {
NSString *userName = [user first_name];
NSString *userId = [user id];
dashBoardViewController *dashBoardViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"dashBoardViewController"];
dashBoardViewController.first_name = userName;
dashBoardViewController.id = userId;
[self presentModalViewController:dashBoardViewController animated:YES];
}
-(void)loginView:(FBLoginView *)loginView handleError:(NSError *)error{
NSLog(@"%@", [error localizedDescription]);
}
@end
//
//ViewController.m
//登录示例FB
//
//
#导入“ViewController.h”
#导入“dashBoardViewController.h”
#导入“BFPaperTabBarController.h”
#进口
@界面视图控制器()
@结束
@实现视图控制器
-(无效)viewDidLoad
{
[超级视图下载];
//加载视图后,通常从nib执行任何其他设置。
self.loginButton.delegate=self;
self.loginButton.readPermissions=@[@“公共”配置文件、@“电子邮件”、“发布”操作、];
}
-(无效)未收到记忆警告
{
[超级记忆警告];
//处置所有可以重新创建的资源。
}
-(无效)loginView蚀刻教育信息:(FBLoginView*)loginView
用户:(id)用户{
NSString*userName=[用户名];
NSString*userId=[user id];
dashBoardViewController*dashBoardViewController=[[UIStoryboard Storyboard with name:@“Main”bundle:nil]实例化控件标识符:@“dashBoardViewController”];
dashBoardViewController.first_name=用户名;
dashBoardViewController.id=用户id;
[self-presentModalViewController:dashBoardViewController动画:是];
}
-(无效)loginView:(FBLoginView*)loginView句柄错误:(N错误*)错误{
NSLog(@“%@,[错误本地化描述]);
}
@结束
及
//
//ViewController.h
//登录示例FB
//
//加布里埃尔·西奥多普洛斯于2014年5月12日创作。
//版权所有(c)2014 Appcoda。版权所有。
//
#进口
#进口
#导入“BFPaperTabBarController.h”
@界面ViewController:UIViewController
@属性(弱、非原子)IBOutlet FBLoginView*loginButton;
@属性(弱、非原子)IBUIButton*showEvent;
@属性(弱、非原子)IBUIButton*goQrcode;
@属性(保留,非原子)NSString*id;
@属性(保留,非原子)NSString*第一个\u名称;
@结束
请向上您应该看看这个stackoverflow主题,它是相同的问题 恢复:
[[UIStoryboard storyboard with name:@“nameofyourstoryboard”捆绑包:nil]实例化eviewController及其标识符:@“dashBoardViewController”]
而不是self.storyboard
。
你一定会得到像那样正确的东西登录Facebook后,您可以声明一个新的控制器
dashBoardViewController
,并尝试将其显示为模式控制器
dashBoardViewController *dashBoardViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"dashBoardViewController"];
dashBoardViewController.first_name = userName;
dashBoardViewController.id = userId;
[self presentModalViewController:dashBoardViewController animated:YES];
但这没有任何意义,因为您已经将仪表板视图控制器作为初始控制器使用了dashBoardViewController
。此外,此类dashBoardViewController
是UITabBarController的子类,因此您可以在附于选项卡栏的每个viewcontroller
中访问它
请参阅此链接以了解UITabBarController的工作原理:
请参阅此链接以了解什么是演示视图控制器:
要解决您的问题,您必须调用当前的tabbarcontroller,将其转换为dashBoardViewController
,并设置facebook参数
- (void)loginViewFetchedUserInfo:(FBLoginView *)loginView
user:(id<FBGraphUser>)user {
NSString *userName = [user first_name];
NSString *userId = [user id];
((dashBoardViewController*)self.tabBarController).first_name = userName;
((dashBoardViewController*)self.tabBarController).id = userId;
}
您应该学习一些面向对象编程课程,以了解它是如何工作的。此外,在编写代码时,请尽量遵守约定,如变量的Camel Case和类的Pascal Case。是否已将
仪表板ViewController
作为情节提要ID分配给界面生成器中的任何ViewController
?LoginSampleFB[504:8259]警告:尝试显示其视图不在窗口层次结构中的对象!在控制台日志中使用此方法时,它会返回@jregnauld@Jack_usti你能把使用FBLoginViewDelegate的控制器的代码放进去吗?@Jack_usti我从你使用的AppCoda修改了这个项目。我添加了一个uitabarcontroller和一个控制器,在您登录Facebook后显示。我想这可能有助于你了解你的问题所在。如果可以,请告诉我。我的项目中有什么需要更改的?他们有点不同@jregnauld@Jack_usti这些区别是什么?故事板是如何设置的?
- (void)loginViewFetchedUserInfo:(FBLoginView *)loginView
user:(id<FBGraphUser>)user {
NSString *userName = [user first_name];
NSString *userId = [user id];
((dashBoardViewController*)self.tabBarController).first_name = userName;
((dashBoardViewController*)self.tabBarController).id = userId;
}
((dashBoardViewController*)self.tabBarController).first_name
((dashBoardViewController*)self.tabBarController).id