0

最初に、これに関するすべてのスタック オーバーフローの質問を見てきましたが、どれも役に立たなかったので、自分で始めようと思いました。

問題: 他の多くの質問と同じように、このポップオーバーを選択すると閉じることができません。

違い: 彼らの方法のすべてがうまくいかなかった.

それでは、コードを見てみましょう:

私のテーブルビューcontroller.hで:

#import <UIKit/UIKit.h>


@protocol PopoverDelegate <NSObject>

-(void)didRowAtIndexPathIsSelected;

@end


@interface tableViewController : UITableViewController

@property (strong, nonatomic) id<PopoverDelegate> myPODelegate;

私のテーブルビューcontroller.mで:

#import "tableViewController.h"

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [_myPODelegate didRowAtIndexPathIsSelected];
    NSLog(@"IS it Gone?");
}

次に、メイン ビュー Controller.h で

#import <UIKit/UIKit.h>
#import "tableViewController.h"

@interface MainView : UICollectionViewController <PopoverDelegate>

@property (nonatomic, strong) TableViewController *tvController;
@property (nonatomic, strong) UIPopoverController *tvPopover;

メイン ビュー Controller.m:

-(void)didRowAtIndexPathIsSelected
{

    NSLog(@"Dismissing now");
    [tvPopover dismissPopoverAnimated:YES];
    tvPopover = nil;
}

すべての助けに感謝します。

編集:

私はさまざまなデバッグのアイデアを試し、試しました:

NSLog(@"%@", _myPODelegate);

didSelectRowAtIndexPath 内で戻ってきました (null)。

4

1 に答える 1

0

次のように、tvController のオブジェクトを割り当てる MainView クラスにデリゲートを設定する必要があります。

tvコントローラー。myPODelegate = 自己

于 2013-08-05T03:51:12.077 に答える