現在雑然としていて、一度に画面に表示される情報が多すぎる UITableViewCell があります。押すと小さなビューが下にスライドして残りの情報を表示し、もう一度押すと元のサイズに戻るボタンを作成したいと思います。このようなことをするのにどうすればいいのだろうと思っていました。私はこれを行うことについて何も知らないので、特定の方向に私を向けるときは具体的にしてください. ありがとう!
3 に答える
テーブルビューのすべてのセルに単一のボタンが必要ですか、それとも各セルのサブビューとしてボタンを追加しますか?
1.各セルのサブビューとしてボタンを追加する場合
a) タグ値が等しいボタンを追加しindexPath.row
、各ボタンの単一メソッドにターゲットを設定します。
元
-(void)infoButonTapped:(UIButton *)sender;
ボタンをクリックして、ボタンのタグ値を見つけ、配列から情報を取得しますUITableViewCell
。
b) infoview を作成し、そこに textview を追加し、テキスト ビューのテキスト プロップとして infoview を設定し、UIView
アニメーションを使用してビューのサブビューとして infoview を追加し、次のクリックで非表示にします
.h ファイルで bool 変数を使用して、infoView の非表示または表示を知るか、infoview にスーパービューがあるかどうかを確認してから、infoview を非表示にするか、infoview を self.view のサブビューとして追加することができます。
- すべてのセルに共通のボタンが必要な場合
a)ボタンをクリックするとindexPath
、テーブルビューメソッドを使用してテーブルビューの選択されたセルを取得します
- (NSIndexPath *)indexPathForSelectedRow;
このメソッドは、選択されたセルのインデックスパスを返すか、セルが選択されていない場合は nil を返します
配列から情報を取得するために indexpath を使用し、上記で説明したステップ 1.b を使用して、表示するサブビューとして infoview を追加します。
tableview のメソッドで情報ビューの座標を設定するために、選択した行の rect を取得することもできます
- (CGRect)rectForRowAtIndexPath:(NSIndexPath *)indexPath;
これは、非表示のテーブルを表示するのに役立つ場合があります
または、セルのプロパティとしてBOOLを使用し、ブール値に従ってUITableViewCellのサブビューを非表示にして、セルのフレームのサイズを変更することもできます。
この場合、次の方法を使用することをお勧めします。
(void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation{
}
メソッドで上記のメソッドを呼び出しますUITableView
didselectRowAtIndexPath
。
より詳しい説明は以下のリンクにあります