私はストーリーボードのプロトタイプセルにカスタムアクセサリビュー(UIButton)を持っています。そのボタンをクリックすると、タップされたアクセサリボタンのデリゲートメソッドは呼び出されません。私が標準の開示ボタンを使用する場合、それはちょうどいいと呼ばれています。私はどこかでフックを紛失していると思っています。誰がどこを知っていますか?UITableViewプロトタイプセルでカスタムアクセサリビューが起動しない
答えて
カスタムテーブルセルのプロトコルを使用してこの問題を回避しました。
CustomAccessoryTableCellDelegate.h
@protocol CustomAccessoryTableCellDelegate <NSObject>
@required
- (void) accessoryButtonTappedForCell: (UITableViewCell *) cell;
@end
CustomAccessoryViewTableCell.h
@interface CustomAccessoryViewTableCell : UITableViewCell
/** The custom accessory delegate. */
@property (nonatomic, weak) id<CustomAccessoryTableCellDelegate> delegate;
@end
CustomAccessoryViewTableCell.m
- (IBAction) buttonAction:(id)sender{
if ([self.delegate respondsToSelector:@selector(accessoryButtonTappedForCell:)]) {
[self.delegate accessoryButtonTappedForCell:self];
}
}
内部テーブルビューコントローラ
付属のデリゲートメソッドについての推測1: あなたは本当にあなたがアクセサリが行く場所に配置されUIButton
を持っている「カスタムアクセサリビュー」を持っていません。それは本当に付属品ではないので、デリゲートのアクセサリのタップボタンは起動しません。
推測2: あなたは本当のアクセサリビューを持っていますが、あなたがユーザーとの対話を食べるが、アクションを発射されていないことでUIButton
を持っているので、それは「タップ」イベントを取得したことがないです。その場合は、単純にUIView
を追加してみてください。
それ以外は、もっと情報が必要です。
イメージビューを使ってみましたが、違いはありませんでした。ボタンはUITableViewCellのaccessoryViewプロパティに接続されます。これをプログラムでUITableViewCellサブクラスから呼び出す方法はありませんか? – smokingoyster
'cellForRowAtIndexPath'では、セルを取得した後、' accessoryView'プロパティにビューへの参照があるか、 'nil'であるかどうかを確認します。 IBで正しく設定されていれば、存在するはずです。 – DBD
ボタン/ビュー/私がそこにあるものを表示します。それ自身の定義されたアクセサリビュータイプのタップイベントのみを処理するようです。テーブルセルからプログラムで実行するのは良い方法ではないようです。私はカスタムプロトコルを使用して終了しました。私はこれを答えに入れます。 – smokingoyster
リンゴのドキュメントは言う
デリゲートは、通常、選択された行に関連する新しいビューを表示することにより、開示ボタン(アクセサリビュー)上のタップに応答します。このメソッドは、indexPathの行に対してアクセサリビューが設定されている場合は呼び出されません。
したがって、カスタムアクセサリビューでは呼び出されません。それは標準的な動作です。
- 1. UITableViewの複数のプロトタイプセル?
- 2. 複数のUITableViewを持つ同じプロトタイプセル
- 3. UITableView行を削除するとcommitEditingStyleメソッドが起動しない?
- 4. プロトタイプセルのジェスチャー認識機能が動作しない
- 5. カスタムクラスのプロトタイプセルはinitを起動しませんか?
- 6. SwipeLeftジェスチャーがUITableViewで動作しない
- 7. UIButtonがUITableviewで動作しない
- 8. UITableViewでプロトタイプセルを定義できません
- 9. UITableViewプロトタイプセルでカスタムUILabelテキストを設定する方法
- 10. 手動でジョブが起動しない
- 11. UITableView lazyload - reloadDataが動作しない
- 12. RxSwift 3.1 UITableViewデータソースが動作しない
- 13. window.onresizeはChromeで起動しないがChromeで起動する
- 14. 起動時に起動しない起動時にnginxを起動しない
- 15. スプリングブートアプリケーションが起動しない
- 16. マルチプロセッシングが起動しない
- 17. RaisePostBackEventが起動しない
- 18. ListBox.SelectionChangedが起動しない
- 19. DataTriggerが起動しない
- 20. Javascriptが起動しない
- 21. Boostrapvalidatorが起動しない
- 22. ワードプレススケジューリングが起動しない
- 23. ボットダイアログが起動しない
- 24. DataGridViewRowCancelEventArgsが起動しない
- 25. RadioButtonList:OnSelectedIndexChangedが起動しない
- 26. カスタムバリデーターが起動しない
- 27. PreSaveActionが起動しない
- 28. componentDidUpdateが起動しない
- 29. エミュレータが起動しない
- 30. shouldReceiveTouchが起動しない
私はUITableViewCellサブクラスを使用しており、インターフェイスビルダーでセルを設計しています。私はテーブルビューのコントローラからそれをやっていないよ。私はそのサブクラスから呼び出す必要があります。 – smokingoyster