2

テーブル ビューがあり、ユーザーが特定の行を選択したときに、新しいエントリが既存の連絡先から取得されるか、新しい連絡先を作成するかを選択する簡単なアクション シートを表示したいと考えています。アクションシートを次のように表示します。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ( indexPath.row != 0  )
    {
        //Select the entry
    }
    else
    {
        UITableViewCell *selectedRow = [tableView cellForRowAtIndexPath:indexPath];
        UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:@"New Contact", @"Existing Contact", nil];

        [sheet showFromRect:selectedRow.frame inView:tableView animated:YES];
        return;
    }

    //Do some other stuff...

}

ドキュメントによると...

討論

iPad では、このメソッドはアクション シートをポップオーバーに表示し、矢印はビューの指定された長方形を指します。ポップオーバーは、指定された四角形に重なっていません。

それでも... アクション シートは、横にポップオーバーではなく、ビューの下部に表示されます。テーブルビューは、splitviewcontroller のマスター ビューです

これが機能しない理由について何か考えはありますか?

4

2 に答える 2

1

私は同じ問題を抱えていましたが、この回答が役に立ちました:

iPad での UIActionSheet の使用

すでにポップオーバー内にあるUIBarButtonItem または UIToolbar から表示すると、iPhone と同様の方法で表示されます。

私にとっては、テーブルが分割ビューで表示され、横向きのときにそのテーブルがポップオーバー (スワイプで非表示にできる側面パネル) として表示されたため、デバイスを横向きにすると UIActionSheet が表示され始めました。ポップオーバー。その理由は、太字で示したものです。別のポップオーバー内からポップオーバーとして表示することはできません。

于 2013-07-22T09:24:12.907 に答える
0

tableView からポップする代わりに、セルの境界を最上位のビュー (コントローラーの、そこからポップする) に変換してみてください...

CGRect frame = [self.view convertRect:cell.bounds fromView:cell];
[sheet showFromRect:frame inView:self.view animated:YES];

tableView 内にさらに階層があり、それがあなたのものを壊している可能性があります。

于 2013-01-03T20:06:39.743 に答える