1

WEPPopoverControlleriPhone アプリケーションでを提示しています。その WEPPopoverController に、UITableViewController. このポップオーバーは、検索の目的で使用しています。

このポップオーバーを開くと、画面は次のようになります。

ここに画像の説明を入力

ここで、このポップオーバーを から閉じて閉じたいと思いますUITableViewController's didSelectRowAtIndexPath

これを行う方法?

コード:

self.searchTableViewController = [[SearchTableViewController alloc] initWithStyle:UITableViewStylePlain];    // UITableViewController
self.seachPopoverController = [[[WEPPopoverClass alloc] initWithContentViewController:self.searchTableViewController] autorelease];   // WepPopoverController

self.seachPopoverController.delegate = self;
[self.seachPopoverController presentPopoverFromRect:[searchB frame] inView:topPanelV permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

前もって感謝します!!!

4

2 に答える 2

6

SearchTableViewControllerに1つの変数を親のように追加します

id parent;

このためのプロパティを次のように作成します

@property (nonatomic,assign)id parent;

それを合成する

@synthesize parent;

作成するときself.searchTableViewController

親を次のように割り当てます

self.searchTableViewController.parent = self; 

今didSelectRowAtIndexに

[parent dismisMyPopoverMethod];


-(void)dismisMyPopoverMethod
{
[self.seachPopoverController dismissPopoverAnimated:YES];
self.seachPopoverController = nil;         
}

以上です。これで完了です。

于 2012-07-04T11:58:02.550 に答える
1

次のようにします。ビュー コントローラーを、1 つのメソッドのみのテーブル ビュー コントローラーのデリゲートにします。したがって、テーブル ビュー コントローラーには 2 つのデリゲートがあります。このメソッドをデリゲート (ビュー コントローラー) に実装します。ただし、テーブルビューコントローラーから呼び出します。より詳細なステップバイステップ:

このポップオーバーを表示するビュー コントローラーで、ポップオーバーのプロパティを宣言します。

@property (strong, nonatomic) UIPopoverController *popoverController;

次のメソッドを持つ新しいプロトコルを作成します (TableInPopoverDelegate と名付けましょう)。

- (void) dismissPopover;

このメソッドをビュー コントローラーの実装ファイルに追加し、これを追加します。

- (void) dismissPopover {
    [self.popoverController dismissPopoverAnimated:YES];
}

プロトコルのヘッダー ファイルを追加し、デリゲート プロパティをテーブル ビュー コントローラーに追加します。

@property (strong, nonatomic) id <TableInPopoverDelegate> popoverDelegate;

追加する前に、ビュー コントローラーをテーブル ビュー コントローラーのデリゲートにします。

tableViewController.popoverDelegate = self; // Here self is your view controller

ユーザーが行を選択したときに、デリゲートで DismissPopover を呼び出します。

[popoverDelegate dismissPopover];
于 2012-07-04T11:36:25.910 に答える