ユーザーをリストするためのテーブルビューがあります。ボタンをクリックすると、別のテーブルビューをポップアップとして表示したい...アクションシートと同じように.... ..!
9 に答える
2つのUITableViewtable1とtable2-があるとします。
セットする
table1.tag = 1;
table2.tag = 2;
デリゲートとデータソースのプロパティをselfに設定します。
どのデリゲートメソッドでも、タグプロパティによってテーブルを検出できます。以下を参照してください。
- (NSInteger)tableView: (UITableView*)tableView numberOfRowsInSection: (NSInteger)section {
if([tableView tag] == 1)
{
//do stuff for table1
return 10;
}
else if([tableView tag] == 2)
{
//do stuff for table2
return 20;
}
}
ミニテーブル用に別の UITableViewController を作成し、ユーザーが大きなテーブルからセルを選択したら、関連するデータソースにフィードします。次に、ミニ テーブルのビューをサブビューとしてメイン ビューに追加します。ミニ テーブルとビッグ テーブルの間に透明な UIView を配置して、ユーザーのジェスチャーがビッグ テーブルに渡されないようにします。
[編集] 同じView Controllerをデータソースにして、複数のテーブルビューのデリゲートにすることができます。すべての UITableView のデリゲート メソッドが元のテーブルビューへの参照を提供するため、大きなテーブルと小さなテーブルを区別できることに気付いたかもしれません。つまり、テーブルごとに異なる行数、異なるセルなどを持つことができます。
上記の私の提案とほぼ同じですが、きれいではないことを除いて、各デリゲートメソッドに次のようなコードが必要です。
if(tableView.tag == kBigTableTag) { ... }
else if (tableView.tag == kMiniTableTag) { ... }
上で説明したように、ミニ テーブルをビュー コントローラーのビューのサブビューとして追加する必要があります。正当な理由がない限り、ミニテーブルには別の UITableViewController を使用することをお勧めします。
すべてが理にかなっていることを願っています:)
UITableView
どのメインテーブルビューをメインビューに追加し、これをメインビューに追加した後、新しいビューUIView
に追加した後、メインビューのサブビューとして設定しUITableView
ます..
新しいビューの背景色に黒を指定し、アルファを 0.85 またはポップアップ ビューに表示される別の色に設定します。
デリゲートとデータソースを両方に与え、UITableView
この両方のテーブルビューを管理するには、次の条件を使用するだけです..
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
if (tableView == yourFirstTable) {
return [Array1 count];
}
else {
return [Array2 count];
}
}
これがお役に立てば幸いです...
:)
IBで2つのテーブルビューを追加します。1つは大きなフルスクリーンビューで、もう1つは大きなフルスクリーンビューよりも大きいZ値を持つ小さなビューです。各テーブルビューにタグを設定します。小さなテーブルビューの非表示値をYESに設定します
すべてのUITableViewデリゲートメソッドで、テーブルビュータグの値を確認し、それに応じて続行します。
if (tableView.tag == 1) {
// load data for the large table view
}
if (tableView.tag == 2) {
// load data for the small table view
}
ボタンをタップして、小さなテーブルビューの非表示値をNOに設定します。これにより、小さなテーブルビューが表示されます。
次の理由から、UITableView をサブビューとしてカスタム ビュー クラスを作成します。
1.再利用可能
2. ビューの外観を変更したり、オプションを追加したりする場合のように、保守が簡単です。カスタム ビューを変更するだけで、そのすべてのインスタンスが更新されます。
3. 委任
そうは言っても、次のプロセスは、これらのカスタム ビューを通常どのように作成するかです。
1) 新しいカスタム ビュー クラスを作成する
2) カスタム ビューで、.h ファイルの先頭にプロトコルを作成し、プロトコル宣言で、このデリゲート プロトコルに準拠するビュー コントローラーが実装する必要があるメソッドを指定します。私にとって、これは通常、オプション選択メソッドとカスタムビュークローズメソッドを作成することを意味します
@protocol CustomViewDelegate ....
// all conforming View Controller must implement these methods.
// in your case, you probably only need the optionChosen method
-(void)optionChosen;
-(void)customViewClose;
@endprotocol
3) カスタム ビュー .h ファイルの @interface セクションで、プロトコルのタイプを受け取る「id」変数を宣言します。
id<CustomViewDelegate> delegate;
4) id デリゲート変数のプロパティを作成します
5) .h ファイル内に UITableView を作成します
6) 渡されたエンティティをパラメーターとして受け取る set-entity メソッドを作成します。これにより、元のビュー コントローラーに送り返すことなく、このエンティティに対してアクションを実行できます。
7) このカスタム クラスの .m ファイル内にテーブル ビューを実装します。
8) オプションが選択されたら、デリゲート メソッド「optionChosen」を呼び出すことができます。
// psuedo-code
-(void)tableView:(UITableView *)tableView didSelectRowAtIndePath:(NSIndexPath *)indexPath
{
[delegate optionChosen];
}
9) 最後に、View Controller で showCustomView() と hideCustomView() を作成します。
// psuedo code
-(void)onLongPressOnTableRow
{
// pass the custom entity to the custom view for updating
[customeView setEntity:[arrEntities objectAtIndex:row]];
[self showCustomView];
}
-(void)showCustomView
{
[UIView animateWithDuration:0.5 actions:^{
customView.alpha = 1;
}];
}
-(void)hideCustomView
{
[UIView animateWithDuration:0.5 actions:^{
customView.alpha = 0;
}];
}
スーパー ビューに 2 つ目のテーブル ビューを追加します。
これはあなたがしなければならないことです。ボタンクリックでaddSubView
、UITableView
その特定のフレームに。に追加して、UITableView
表示されるようにしてください。必要に応じて、アニメーション化してpopoupのように見せることができます。これで一般的なアイデアが得られることを願っています:) ...他に何かあればお尋ねください...
メイン ビューのサブビューとしてテーブル ビューを追加できます。タイプのクラスを作成し、UIViewController
最初UITableView
にそこにサブビューとして追加します。次に、ボタンをタップするUITableView
と、同じのサブビューとして2 番目を追加できますUIViewController
。おそらく、このテーブル ビューを下からスライドするアニメーションで表示し、このテーブル ビューの背後にオーバーレイ ビューを追加できます。
これを解決するには 1 ~ 2 の方法がありますが、UX の観点からは、ドロップダウン テーブル用に別のテーブルを作成し、データソースに適切なデータを設定することをお勧めします。ユーザーがメイン テーブルからセルを選択したとき。次に、小さなテーブルビューをサブビューとしてメイン ビューに追加します。UX を向上させるために、これらのテーブル間に半透明のビューを追加するか、大きなテーブルの userInteractionEnable を NO に設定し、小さなテーブルを表示することができます。