0

この時点で私はかなりイライラしていますが、それは私が見逃しているものだと確信しています. このコードでは、残りの関数が実行された後に、新しい viewController へのセグエが表示されます。viewController を実行中のコードにするにはどうすればよいですか? 基本的に、そのビューが閉じられるまで tweetText 関数が発生しないようにします。複数の Twitter アカウントがある場合は、ユーザーが twitter アカウントを選択できるようにしようとしています。私は多くの異なる方法を試しました。Apple 独自のコード例では、ユーザーにオプションを提供することを提案していますが、コードの残りの部分を吹き飛ばさずにそれを行う方法については何も提供していません。

コードは次のとおりです。

 [accountStore requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) {

        if(granted) {
            dispatch_sync(dispatch_get_main_queue(), ^{
                // Get the list of Twitter accounts.
                self.accountsArray = [accountStore accountsWithAccountType:accountType];

                if([self.accountsArray count] > 1 /* Check method to see if preference is still a valid account */) {
                    // Display user accounts if no preference has been set
                    [self performSegueWithIdentifier:@"TwitterAccounts" sender:self.accountsArray];

                    [tweet tweetText:tweetString account:self.twitterAccount type:AchievementTweet];

                } else {
                    [tweet tweetText:tweetString account:[self.accountsArray lastObject] type:AchievementTweet];
                }
            });

        } else {
            [tweet performSelectorOnMainThread:@selector(displayText:) withObject:[NSNumber numberWithInt:403] waitUntilDone:NO];
        }
       }];
4

1 に答える 1

1

あなたの目的が何であるかについて少し混乱していますが、2つのオプションがあります。

ここでは GCD は必要ありません。

最初のアクションが完了したら、2 番目のアクションを実行する通知に登録することをお勧めします。(アップルが画像ピッカーを処理する方法と同様に、別の機能を実行するために画像が最終的に保存されたときにコードで通知します)。

もう1つの方法はデリゲートを使用することです。このアプローチでは、コードの2番目の部分を別の関数に配置し、最初に実行するビューコントローラーのデリゲートとしてそのコントローラーを宣言します。デリゲートに 2 番目のコードを実行するように依頼し、必要に応じてデリゲートにビューを閉じるよう依頼します。

于 2012-05-31T01:31:30.937 に答える