0

Xcode で firstViewController の新しいタブ付きビュー プロジェクトを作成しました このようなプロトコルを作成しました

@protocol myProtocol <NSObject>
-(void)myProtocolMethodOne;
@end


@interface FirstViewController : UIViewController

@property (weak) id<myProtocol> mypDelegate;

- (IBAction)button1Tap:(id)sender;

@end

.mファイルでこれを行いました

@synthesize mypDelegate;
.
.
.
- (IBAction)button1Tap:(id)sender
{
    [mypDelegate myProtocolMethodOne];
}

これは secondViewController .h ファイルです

@interface SecondViewController : UIViewController <myProtocol>

@property (strong) FirstViewController *fvc;

@end

これは.mファイルです

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.title = NSLocalizedString(@"Second", @"Second");
        self.tabBarItem.image = [UIImage imageNamed:@"second"];
        _fvc = [[FirstViewController alloc]init];
        [_fvc setMypDelegate:self];
    }
    return self;
}


-(void)myProtocolMethodOne
{
    NSLog(@"2nd VC");
    [[self tabBarItem]setBadgeValue:@"ok"];
}

myProtocolMethodOne が機能していません。何が間違っていましたか?

4

2 に答える 2

2
_fvc = [[FirstViewController alloc]init];
[_fvc setMypDelegate:self];

デリゲートを完全に新しいに設定していFirstViewControllerますが、メソッドをトリガーする人には設定していません- (IBAction)button1Tap:(id)sender

たとえば、2つのView Controller間の遷移を行うときは、デリゲートを渡す必要があり- prepareForSegue:ます[self.navigationController pushViewController:vc animated:YES]

于 2013-02-08T11:40:43.927 に答える
0

プロトコルの基本を学ぶためのソースコード付きのベストサイトです。

////// .h ファイル

#import <Foundation/Foundation.h>

@protocol myProtocol <NSObject>

@required

-(void)myProtocolMethodOne;

@end

@interface FirstViewController : UIViewController
{
    id <myProtocol> mypDelegate;
}

@property (retain) id mypDelegate;

- (IBAction)button1Tap:(id)sender;

@end

///////// .m ファイル

@synthesize mypDelegate;
.
.
.
.
- (void)processComplete
{
    [[self mypDelegate] myProtocolMethodOne];
}
于 2013-02-08T11:44:31.033 に答える