私は自分のクラス用に独自の代理人を持っています。独自のデリゲート - 機能が50%で動作していますが、何かが間違っています
MainMenuViewDelegate
#import <Foundation/Foundation.h>
@class MainMenuView;
@protocol MainMenuViewDelegate <NSObject>
-(void) mainMenuViewLibrary:(MainMenuView*)controller withString:(NSString*)string;
@end
MainMenuView.h
#import <UIKit/UIKit.h>
#import "WorkspaceView.h"
#import "MainMenuViewDelegate.h"
@interface MainMenuView : UIView
@property (nonatomic,weak) id <MainMenuViewDelegate> delegate;
....
@end
MainMenuView.m
@implementation MainMenuView
@synthesize delegate;
...
-(void)library:(id)sender{
//test
NSLog(@"it's work");
NSString *string = @"some text";
[delegate mainMenuViewLibrary:self withString:string];
NSLog(@"finish");
}
WorkspaceView.h
#import <UIKit/UIKit.h>
#import "MainMenuViewDelegate.h"
@interface WorkspaceView : UIView <MainMenuViewDelegate> {
int menuStatus;
UILabel *label;
}
@property int menuStatus;
@property (nonatomic, retain) UILabel *label;
@end
WorkspaceView.m
#import "WorkspaceView.h"
#import "MainMenuView.h"
@implementation WorkspaceView
@synthesize menuStatus;
@synthesize label;
....
-(void) mainMenuViewLibrary:(MainMenuView*)controller withString:(NSString*)string{
[label setText: string];
}
@end
は、問題は、私はbtnLibraryを押したときに表示されると-(void)library:(id)sender
関数を呼び出します。 コンソールの印刷it's work
、私の代理人関数が呼び出されますが、私のラベル(WorkspaceView
に置かれています)に変更が見られず、終了コンソールの出力finish
にあります。
メインスレッドで '[delegate mainMenuViewLibrary:self withString:string];が呼び出されていますか? –
@ChrisWagner、私のプロジェクトのメインクラスはMainControllerとWorkspaceViewオブジェクトが初期化されるViewControllerです。 –