我正在尝试拉出一个UIActionSheet来显示当前登录到Twitter的“设置”中的所有帐户。我得到所有与Twitter类型匹配的帐户的NSArray,然后运行以下代码:
UIActionSheet *chooseaccount = [[UIActionSheet alloc]initWithTitle:@"Choose Account" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles: nil];
for (int i = 0; i < [arrayOfAccounts count]--; i++) {
[chooseaccount addButtonWithTitle:[arrayOfAccounts objectAtIndex:i]];
}
[chooseaccount addButtonWithTitle:@"Cancel"];
chooseaccount.cancelButtonIndex = arrayOfAccounts.count;
chooseaccount showInView:self.tabBarController.view];
但是,我收到错误消息“不允许分配目标-c消息的'只读'返回结果”
关于让UIActionSheet显示Twitter帐户的所有用户名的任何建议?
更新:
经过几个建议之后,我将代码更改为:
-(void)twitteraccess {
ACAccountStore *account = [[ACAccountStore alloc] init];
ACAccountType *accountType = [account accountTypeWithAccountTypeIdentifier:
ACAccountTypeIdentifierTwitter];
[account requestAccessToAccountsWithType:accountType options:nil
completion:^(BOOL granted, NSError *error)
{
if (granted == YES)
{
NSLog(@"Granted");
NSArray *arrayOfAccounts = [account
accountsWithAccountType:accountType];
if ([arrayOfAccounts count] > 0)
{
NSLog(@"%i", [arrayOfAccounts count]);
if ([arrayOfAccounts count] > 1) {
NSLog(@"Greaterthan1");
UIActionSheet *chooseaccount = [[UIActionSheet alloc]initWithTitle:@"Choose Account" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles: nil];
for (int i = 0; i < [arrayOfAccounts count]; i++) {
ACAccount * account = [arrayOfAccounts objectAtIndex:i];
[chooseaccount addButtonWithTitle:account.username];
NSLog(@"%@", account.username);
}
[chooseaccount addButtonWithTitle:@"Cancel"];
chooseaccount.cancelButtonIndex = arrayOfAccounts.count;
[chooseaccount showInView:self.tabBarController.view];
}
else {
}
}
}
else {
if(error.code == 6){
[self performSelectorOnMainThread:@selector(alertmessagetwitter)
withObject:nil
waitUntilDone:YES]; }
}
}];
}
操作表确实出现了,但是大约需要25秒才能显示出来。
最佳答案
您不能编写[arrayOfAccounts count]--
,这实际上扩展为:
[arrayOfAccounts count] = [arrayOfAccounts count] - 1; // assigning to readonly
相反,只需使用
[arrayOfAccounts count] - 1
(或快速枚举)。for (int i = 0; i < [arrayOfAccounts count]-1; i++) { //...
编辑有关
InvalidArgumentException
:假设
arrayOfAccounts
包含ACAccount
对象而不是NSString
:for (int i = 0; i < [arrayOfAccounts count]-1; i++) { //...
ACAccount * account = [arrayOfAccounts objectAtIndex:i];
[chooseaccount addButtonWithTitle:[account userName]];
}
关于iphone - 使用NSArray填充UIActionSheet按钮,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14284368/