登录后如何更新 UITextView

Posted

技术标签:

【中文标题】登录后如何更新 UITextView【英文标题】:How to update UITextView after login 【发布时间】:2012-02-24 05:10:30 【问题描述】:

我正在尝试使用 ARC 将 Facebook 集成到我的 ios 应用中。为了使用 FB SDK,我已经为这些文件禁用了“-fno-objc-arc”的 ARC。但是,它仍然有 EXC_BAD_ACCESS 错误,我需要更改

@property(nonatomic, assign) id<FBSessionDelegate> sessionDelegate;

@property(nonatomic, retain) id<FBSessionDelegate> sessionDelegate;

现在可以登录了,但是登录后 UITextView 没有更新

- (void)viewWillAppear:(BOOL)animated

    [super viewWillAppear:animated];
    AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if ([defaults objectForKey:@"FBAccessTokenKey"] 
        && [defaults objectForKey:@"FBExpirationDateKey"]) 
        [delegate facebook].accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
        [delegate facebook].expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
        [defaults synchronize];
    
    if (![[delegate facebook] isSessionValid]) 
    
        [[delegate facebook] authorize:nil];
    

- (void)fbDidLogin 


    AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:[[delegate facebook] accessToken] forKey:@"FBAccessTokenKey"];
    [defaults setObject:[[delegate facebook] expirationDate] forKey:@"FBExpirationDateKey"];
    [defaults synchronize];

    [[delegate facebook] requestWithGraphpath:@"me" andDelegate:self];


- (void)request:(FBRequest *)request didLoad:(id)result 
    
    if ([result isKindOfClass:[NSArray class]]) 
        result = [result objectAtIndex:0];
    
    if ([result objectForKey:@"name"]) 
        self.uitextview.text = [result objectForKey:@"name"];
    

我已经检查过“[result objectForKey:@"name"]”会返回一个结果,但“self.uitextview”无法识别。

成功?

【问题讨论】:

你的self.uilabel在哪里? 【参考方案1】:

发现无法使用 Appdelegate 中的 ViewController init,如 Facebook Hackbook 示例所示。

替换为以下声明:

UITabBarController *tabBarController = (UITabBarController *) self.window.rootViewController;
ViewController *viewcontroller = [[tabBarController viewControllers] objectAtIndex:4];

http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1

【讨论】:

以上是关于登录后如何更新 UITextView的主要内容,如果未能解决你的问题,请参考以下文章

成功登录后如何更新 ApolloClient 授权标头?

登录后如何更新 UITextView

成功登录后如何更新 Spring Security UserDetails impls?

Vue组件收到数据后如何更新

Graphcool 登录后更新 Relay 存储

如果用户在登录后更改了他的 Facebook 个人资料详细信息,如何在我的应用程序中更新 Facebook 个人资料?