UIActionSheet
のメソッドshowFromTabBar:
を使用して、アクションシートを表示しています。デリゲートメソッドactionSheet:clickedButtonAtIndex:
では、現在のUITabBarItem
のタイトルを[email protected]"New Title"
と呼びます。self
は現在のTabBarControllerのViewControllerです。私がこれを行うと、TabBarItemのタイトルは空の文字列( "")になります。アクションシートのdelegate-methodにNSNotification
を投稿し、同じ方法で通知ハンドラメソッドのタイトルを変更しようとすると、アプリケーションがクラッシュします(コンソールに出力されません)。しかし、代わりに[self.tabBarItem performSelectorOnMainThread:@selector(setTitle:) withObject:@"New Title" waitUntilDone:NO]
を呼び出すと、両方のバリアントで動作します。これはSDKのバグですね。actionSheet-delegateメソッドでtabBarItem-titleを設定できません
0
A
答えて
1
基本的には、へのコール中にUIActionSheet
がメインスレッド(または少なくともそれとのやりとり)をブロックしています。これはおそらくUITabBar
によって/から提示された結果です。
setTitle:
タスクは、performSelectorOnMainThread:withObject:waitUntilDone:NO
コールで後で完了するようにスケジュールしています。そして、これはうまくいくでしょう。
dispatch_async(dispatch_get_main_queue(), ^{
self.tabBarItem.title = @"New Title";
});
そして、その構文はそれは素晴らしいことだ、より良いあなたにぴったりの場合:そうのようなブロックを使用してと同一でない場合は、非常に似ています。
しかし、より簡単な方法があります。デリゲートメソッドactionSheet:didDismissWithButtonIndex:
を使用してください。UIActionSheet
がすでに終了したときに、このメソッドが呼び出され、他の呼び出しをブロックしなくなります。
関連する問題
- 1. POSTメソッドでnode.jsにヘッダーを設定できません
- 2. Grails 3インターセプタ - 'after'メソッドでクッキーを設定できません
- 3. UIGestureRecognizer設定メソッドを追加できません
- 4. ServiceProviderは設定メソッドのオプションを解決できません
- 5. 設定でmod_rewrite LogLevelを設定できません
- 6. ComboBox.SelectedItemを設定できませんか?
- 7. contentviewを設定できません
- 8. "mongod"を設定できませんPATH
- 9. WPF:フォーカスを設定できません
- 10. Neo4jクラスタを設定できません
- 11. サンプルフォーマットを設定できません[FFMPEG]
- 12. JAVA_HOMEを設定できません
- 13. ビッグビュースタイルを設定できません
- 14. ヘッダーを設定できません - SlimFramework
- 15. Kubernetes - DNSを設定できません
- 16. コトリンを設定できません
- 17. カスタムフォントを設定できません
- 18. UIImageViewイメージを設定できません
- 19. CKEditor:フルツールバーを設定できません
- 20. UITableViewCellを設定できませんdetailTextLabel.text
- 21. XMPPリスナーを設定できません
- 22. AzureRmKeyVaultAccessPolicyを設定できません
- 23. Unirestリクエストボディを設定できません
- 24. マルチバインドを設定できません
- 25. Email-extを設定できません
- 26. スパークメモリを設定できません
- 27. カスタムクラス名を設定できません
- 28. UILabelプロパティを設定できません。
- 29. キャッシュを設定できません
- 30. Cassandraクラスタを設定できません
+1です。これはdidDismissWithButtonIndex:メソッドで機能するためです。しかし、あなたの "ブロックされたメインスレッド"の説明は満足のいくものではありません。 「ブロックされた」という言葉で正確に何を意味し、なぜそれが単純なタイトルプロパティの(直接の)設定を禁止するのですか? –