3

私はiPad開発者に不慣れです、

私はUIPopover自分のアプリケーションで使用しています。ポップオーバーの行を選択すると、ポップオーバーはビュー内でまだ非表示になりません。画面のどこかで外にタッチすると非表示になります。

ユーザーが任意の行を選択した後、ポップオーバーを非表示にしたい。

これが私のコードスニペットです、

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath
{
    for(int index=0;index<=indexPath.row;index++)
    {
        UITableViewCell *cell =[tableView cellForRowAtIndexPath:indexPath];
        lbl.text=cell.textLabel.text;
    }
}

ロジック:ポップオーバーの任意の行を選択すると、対応するテキストがフェッチされ、ラベルに保存されます。

どんな助けでもありがたいです。

編集

UIViewController* popoverContent = [[UIViewController alloc]init];
UIView* popoverView = [[UIView alloc] initWithFrame:CGRectMake(110, 0, 500, 4)];

popoverPolicyNameTable = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, 250, 200) style:UITableViewStylePlain];// size of tableview inside popover

[popoverPolicyNameTable setDelegate:(id<UITableViewDelegate>)self]; 
[popoverPolicyNameTable setDataSource:(id<UITableViewDataSource>)self]; 
[self.view addSubview:popoverPolicyNameTable];
[popoverPolicyNameTable release];

[popoverView addSubview:popoverPolicyNameTable];
popoverContent.view = popoverView;
popoverContent.contentSizeForViewInPopover = CGSizeMake(250, 200); //size of popover border
self.popoverController = [[UIPopoverController alloc] initWithContentViewController:popoverContent];

[self.popoverController  presentPopoverFromRect:CGRectMake(350,100, 35, 35) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; //size of arrow

[popoverContent release];
[popoverView release];
4

4 に答える 4

1

UITableViewあなたの:を持っているクラス内に1つの変数を追加します

id parent;

次に、プロパティを作成して合成します。

@property(nonatomic, retain) id parent;

@synthesize parent;

次に、このオブジェクトを作成しViewControllerて追加するPopovercontroller場合は、次のようにします

myTableViewController.parent = myPopoverControllerObject;

didSelectRowAtIndexPath

[parent dismissPopoverAnimated:YES];

そして、あなたは終わりました!!!

于 2012-07-05T12:41:25.487 に答える
1

このようなものを実装する必要があります

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController1{

    [self.popoverController dismissPopoverAnimated:YES];
    self.popoverController=nil;

}
于 2012-07-05T13:07:37.993 に答える
0

委任を使用して、ユーザーがリスト内のアイテムを選択したことを委任に通知します。デリゲートは、ViewControllerを閉じる方法を知っています。

このアプローチは、コンテナに依存しないため、より優れています。たとえば、iPhoneのナビゲーションコントローラを使用して、ポップオーバーの外でViewControllerを再利用できます。

于 2012-07-05T12:50:13.497 に答える
0

Popoverコントローラーをクラスメンバー変数にします。

次に、テーブルビューをクリックして、そのpopovercontollerのメソッド呼び出しdismissメソッドをクリックします。

于 2012-07-06T07:37:59.870 に答える