ios | ios도 모르고 하이브리드 앱 개발하기 [ 14 AppDelegate에서 ViewController 사용하기 / AppDelegate란 ]

2016. 9. 21. 11:53mobile/ios



ios도 모르고 하이브리드 앱 개발하기 [ 14 AppDelegate에서 ViewController 사용하기 ]




AppDelegate 에서 ViewController 클래스의 메소드를 사용하는 방법에 대해서 알아본다.


여러 방법이 있겠지만 가장 심플한 방법을 소개한다.


Java 로 치면 이런 모양이 되지 않을까 ?

1
2
ViewController viewController = new ViewController();
viewController.메소드();
cs




 

AppDelegate 에서 ViewController 클래스의 메소드를 사용하기에 앞서


AppDelegate 에 대해서 간단히 소개한다.



위 그림에서 보면 AppDelegate.h , AppDelegate.m 파일이 있다.

AppDelegate.m 파일을 열어보면 이미 기본적으로 6개의 메소드가 정의되어있다.


이 메소드들을 간략히 살펴보면 다음과 같다.

 

application: didFinishLaunchingWithOptions

어플리케이션이 최초 실행되는 시점


applicationDidBecomeActive

어플리케이션이 백그라운드로 돌아갔다가 다시 호출되는 시점


applicationWillResignActive

어플리케이션이 백그라운드로 들어가기 바로 전 ( 홈버튼을 누른 직후 ) 시점


applicationDidEnterBackground

어플리케이션이 완전한 백그라운드 상태인 시점


applicationWillEnterForeground

어플리케이션이 다시 활성화가 되는 시점


applicationWillTerminate

- 어플리케이션이 완전히 종료되기 전 시점




각각의 정해진 시점에 실행되는 함수인 것을 알 수 있다.

고로 App lifecycle 에 관여하는 클래스인 것처럼 보인다.


예를들어서 App이 종료되기 직전에 어떤 비지니스 로직을 수행해야한다고 하면

AppDelegate의 applicationWillTerminate함수 내부에 직접 구현하기 보다는

다른 클래스에 구현되어 있는 함수를 applicationWillTerminate 내부에서 호출하도록 구현한다면 더욱 보기 좋지 않을까 싶다.



그 예로 ViewController 클래스의 함수를 사용하는 방법을 설명한다.




AppDelegate 에서 ViewController 클래스의 메소드를 사용하는 방법


AppDelegate.h 파일

1
2
#import "ViewController.h"
@property (weak, nonatomic) ViewController *viewController;
cs

1# : 최 상단에 ViewController.h 파일을 import 하겠다고 선언한다.

2# : @interface 와 @end 사이에 property를 선언한다.



AppDelegate.m 파일

사용방법 : [self.viewController 메소드];

1
2
3
4
5
6
- (void)applicationDidBecomeActive:(UIApplication *)application {
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
    
    // viewController 사용
    [self.viewController printAlert:@"Network Message" msg:@"ViewController 쉽게 가져다쓰기"];
}
cs

5# : applicationDidBecomeActive 함수(이미 구현되어 있는 함수임) 내부에 5#처럼 작성함


printAlert 가 오류난다면 ?

printAlert 함수는 는 다른 포스팅에서 만든 alert 띄우는 함수 참고 -> ios 모르고 하이브리드 개발하기 [ 9 UIAlertController 사용하기 / alert 띄우기 / dialog ]




ViewController.m 파일

1
2
3
4
5
6
7
8
9
#import "AppDelegate.h"
 
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
   
    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
    appDelegate.viewController = self;
}
cs

1# : 파일 상단에 AppDelegate를 Import

3# : ViewController 가 최초 실행될 때 실행되는 함수 (이미 구현되어 있는 함수임)

7# ~ 8# : AppDelegate.h 에 선언한 property에 self(ViewController 자신)을 넘겨줌





 

실행하면 다음과 같은 Alert 메시지를 확인할 수 있다.

물론 printAlert 함수를 구현하는 포스팅을 보고 구현했다면...










 * 경고


IOS에 무지한 상태에서 구글링만으로 앱 개발 및 포스팅이 진행됨


누구나 따라할 수 있겠지만 결코 완벽한 정답이 아닐 수 있음


아주 주관적인 입장에서의 포스팅임