0

このコードを使用していますが、「動作する」ことはありません。

DetailViewController.h

[#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>

@protocol ProtocolNameDelegate

-(void)DoSomething;

@end

@interface DetailViewController : UIViewController {
     id<ProtocolNameDelegate> _delegate;
}

@property (strong, nonatomic) id<ProtocolNameDelegate> _delegate;

DetailViewController.m

@synthesize _delegate;

- (void)viewDidLoad
{
    [super viewDidLoad];

    [_delegate DoSomething];
}

MasterViewController.h

@interface MasterViewController : UITableViewController <ProtocolNameDelegate> 

MasterViewController.m

-(void)DoSomething
{
    NSLog(@"It works");

}

次のようなものを追加する必要があると思います:

MasterViewController* mvc = [[MasterViewController alloc] init];
    mvc._delegate = self;

しかし、それはエラーを出します。ちなみに、MasterViewController の別のインスタンスを作成しますか?

4

2 に答える 2

0

では、どこかMasterViewController.mに割り当てて初期化する必要がありますDetailViewController

DetailViewController* dvc = [[DetailViewControlleralloc] init];
    dvc._delegate = self;

また、あなたが書いたので[_delegate doSomething]

DetailviewController's viewDidLoad方法、

それはあなたが設定 dvc._delegate = self;しなければならないことを意味しますMasterViewController.m

dvc のビューをロードする前 (addSubview またはビューをロードするものの前)。

于 2013-07-23T11:12:44.187 に答える