собственный делегат - функция работает на 50%, что-то не так - PullRequest
1 голос
/ 14 декабря 2011

У меня есть собственный делегат для моего класса.

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.

1 Ответ

2 голосов
/ 14 декабря 2011

Ни один из ваших объектов не установлен в качестве делегата, поэтому делегат равен нулю - сообщения, отправленные на ноль, отключаются.Ничего не произошло.

Если это не проблема, поместите NSLog в:

-(void) mainMenuViewLibrary:(MainMenuView*)controller withString:(NSString*)string;

в WorkspaceView и проверьте, вызывается ли метод.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...