1

アプリにsplitViewがあります。splitviewのdetailviewからボタンをクリックするとモーダルが表示されます。そのモーダルでは、splitviewのrootviewコントローラー(tableviewを含む)を含むポップオーバーを開きました。

ここで、ポップオーバーのテーブルビューのdidSelectのモーダルビューを閉じたいのですが、閉じません。私はこれをたくさん検索して試しましたが、解決策を得ることができませんでした。

私が試したコードは次のとおりです。

//DetailView (Presented ModalView).m

    -(IBAction)popOverBtnPressed:(id)sender
    {
        LeftSideVCViewController *popUp=[[LeftSideVCViewController alloc] initWithNibName:@"LeftSideVCViewController" bundle:nil];

        popView = [[UIPopoverController alloc]initWithContentViewController:popUp];
        popView.delegate =self;
        [popView setPopoverContentSize:CGSizeMake(300, 700)];
        [popView presentPopoverFromRect:CGRectMake(150,5,20,40) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

    }


    -(void)dismissModal
    {
        [self dismissViewControllerAnimated:YES completion:nil];
    }


   // LeftSideView.m

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        DetailView *d=[[DetailView alloc]init];   
       [d dismissModal];
    }

// GridView.m

ビューからのDetailViewの表示(GridView)

-(IBAction)Grid_buttonPressed:(id)sender {

DetailView *rd=[[DetailView alloc]initWithNibName:@"DetailView" bundle:nil];
rd.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    [self presentModalViewController:rd animated:YES];
}

これを行う方法 ?ありがとう。

4

3 に答える 3

0

uを記述することによりDetailView *d=[[DetailView alloc]init]、DetailViewの別のインスタンスをインスタンス化します。この状況での解決策は、LeftSideViewのデリゲートを作成することです。

上記のどこか:

DetailView *instanceDV = [DetailView new];
LeftSideView *instanceLSV = [LeftSideView new];
instanceLSV.delegate = instanceDV;

その後:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

if([self.delegate respondsToSelector:@selector(dismissModal)])
   [self.delegate dismissModal];

 }
于 2013-01-05T07:20:44.033 に答える
0

DetailViewの新しいインスタンスを作成d=[[DetailView alloc]init]しています。ポップオーバーコントローラーにアクセスして閉じてみてください。

于 2013-01-05T07:16:49.507 に答える
0

マスターポップオーバーを介してモーダルに表示されたUISplitViewControllerを閉じる方法は次のとおりです。それが正確な質問であったかどうかはわかりませんが、おそらく一部の人には役立ちます。マスタービュー自体(ポップオーバービュー)から:

//get the detail view
MyDetailViewClass *detailView = (MyDetailViewClass *)[[self.splitViewController.viewControllers lastObject] topViewController];

//dismiss the master popover
[detailView.masterPopoverController dismissPopoverAnimated:YES];

//dismiss the whole view
[detailView.navigationController dismissViewControllerAnimated:YES completion:nil];
于 2014-12-11T11:56:11.060 に答える