私が取り組んでいるアプリにはUIViewController
、サブクラスとUIView
サブクラスがあります。storyboard
ビューコントローラーには、UIview
. uiview で何かを描画していますが、View Controller から取得する必要がある値を知る必要があります。そこで、View Controller .h ファイルにカスタム プロトコルを作成しました。
@protocol SSGraphViewControllerProtocol <NSObject>
- (void)numberOfSemesters:(int)number;
@end
@property (weak, nonatomic) id <SSGraphViewControllerProtocol> delegate;
クラスでは、UIView
上記のプロトコルがあることを確認し、そのメソッドを実装しました。でも。ビューコントローラーから数値を渡すと、UIView
それを受け取りません。NSLog を使用して、それUIView
が入力されていないことがわかりました- (void)numberOfS:(int)number;
。私は何か間違ったことをしていますか? どうすれば修正できますか?UIViewController
クラスからUIView
コントローラーにデータを送信する別の方法はありますか?
完全なコードは次のとおりです: UIViewController.h
@protocol SSGraphViewControllerProtocol <NSObject>
- (void)numberOfSemesters:(int)number;
@end
@interface SSGraphViewController : UIViewController
@property (weak, nonatomic) id <SSGraphViewControllerProtocol> delegate;
@end
UIViewController.m
@implementation SSGraphViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
[self.delegate numberOfSemesters:2];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
UIView.h
@interface SSGraph : UIView <SSGraphViewControllerProtocol>
@end
UIView.m
static int numberOfS = 0;
@implementation SSGraph
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
SSGraphViewController *graph = [[SSGraphViewController alloc] init];
graph.delegate = self;
return self;
}
- (void) numberOfSemesters:(int)number{NSLog(@"YES");
numberOfSemesters= number;
}
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
}