首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UIAlertView在完成处理程序块中不起作用

UIAlertView在完成处理程序块中不起作用
EN

Stack Overflow用户
提问于 2013-02-25 05:13:20
回答 1查看 2.8K关注 0票数 6

我正在编写代码来访问用户的Twitter帐户,但在处理设备上没有帐户的情况下遇到了问题。我想要做的是显示一个警告,告诉用户为了向Twitter进行身份验证,他们首先需要在自己的设置中创建帐户。

下面是我的代码:

代码语言:javascript
运行
复制
self.accountStore = [[ACAccountStore alloc] init];
ACAccountType *accountTypeTwitter = [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];

[self.accountStore requestAccessToAccountsWithType:accountTypeTwitter options:nil completion:^(BOOL granted, NSError *error) {
    if(granted) {
        //Doesn't matter for the present case
    } else if (error){

        [SVProgressHUD dismiss]; //not directly relevant to the present question, but it also doesn't work within the block, so I'm leaving it as a clue

        switch ([error code]){
            case (6):

                UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"No Twitter Account Detected" message:@"Please go into your device's settings menu to add your Twitter account." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
                [alert show]; //triggers an error
                break;

        }
    } 
}];

我不是Xcode调试器的专家,但显然错误发生在ACAccountStoreReply线程中,在调用alert show之后大约有25次调用,在一个名为ucol_getVersion的进程中。调试器状态为EXC_BAD_ACCESS(code=2,address=0xcc)。

我在Stack Overflow和整个互联网上搜索了关于UIAlertViews不能在块中工作的解决方案,还搜索了显示警报的一般问题(我尝试了不同的委托值),还有对requestAccessToAccountsWithType的调用的一般问题。

我还试图通过阅读各种在线资源和Objective-C第四补充中的编程相关页面来温习我对块的理解。

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-25 05:16:40

您应该始终确保任何UI交互都是在主线程上完成的。将您的UIAlertView调用包装在dispatch_async

代码语言:javascript
运行
复制
dispatch_async(dispatch_get_main_queue(), ^{
   UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No Twitter Account Detected" message:@"Please go into your device's settings menu to add your Twitter account." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
   [alert show];
});

在通话结束时,您也有两个nil

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15056740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档