デリゲート経由で外部メソッドを呼び出す方法とサンプルを以下にまとめました。
必要な手順
- 呼び出し側のヘッダファイル(ここでは ViewController.h)でデリゲートを指定する
- 呼び出し側の実装ファイル(ViewController.m)に最終的に呼び出したいメソッドを記述する
- 外部クラスのヘッダファイル(MyClass.h)に protocol、デリゲート、最終的に呼び出したいメソッドを記述する
- 外部クラスの実装ファイル(MyClass.m)にデリゲートを synthesize宣言する
サンプルダウンロード
ソースコード
ViewController.h
1
2
3
4
5
6
7
| #import <UIKit/UIKit.h>
#import "MyClass.h"
//ここでデリゲートを指定しておく
@interface ViewController : UIViewController <SampleDelegate>
@end
|
ViewController.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| #import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self main];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
- (void)main
{
//MyClass初期化
MyClass *myClass = [[MyClass alloc] init];
//MyClassの delegateに自分自身を渡す
myClass.delegate = self;
//MyClassのデリゲートメソッド呼び出し
[myClass callDelegate];
}
//デリゲートメソッド
- (void)sample
{
NSLog(@"sample");
}
@end
|
MyClass.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| #import <UIKit/UIKit.h>
//protocolを宣言しておく
@protocol SampleDelegate;
@interface MyClass : UIViewController {
//デリゲートを登録
id<SampleDelegate> _delegate;
}
//デリゲートのプロパティ宣言
@property (nonatomic, assign) id<SampleDelegate> delegate;
//ViewControllerから呼ばれるサンプルメソッド
- (void)callDelegate;
@end
#pragma mark delegate prottype
//protocol宣言
@protocol SampleDelegate<NSObject>
//デリゲート経由で呼ばれるメソッドを宣言
@optional
- (void)sample;
@end
|
MyClass.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| #import "MyClass.h"
@interface MyClass ()
@end
@implementation MyClass
//delegateを宣言しておく
@synthesize delegate;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
}
//ViewControllerから呼ばれるメソッド
- (void)callDelegate
{
[delegate sample];
}
@end
|
お薦めの参考書
Swiftではじめる iPhoneアプリ開発の教科書 Swift 2 & Xcode 7対応
この参考書の通りに実践サンプルを作成することで、確実に力を養うことができます。サンプルコードもサイトからダウンロード出来るようになっており、特に広告の貼り方などが参考になりました。Swiftで何が出来るかを知ることができ、入門用にお薦めの1冊です。