2015년 1월 27일 화요일

iOS multi target code reuse

http://www.itexico.com/blog/bid/99497/iOS-Mobile-Development-Using-Xcode-Targets-to-Reuse-the-Code

예전에 앱을 처음 만들던 시기에는 광고를 붙이고 무료 앱
광고가 없는 1$ 유료 앱을 이렇게 항상 두개를 만들었다.

자연스럽게 하나의 코드로 #if ~ #else ~ #end
를 하면서 무료 앱인 경우 추가로 iAD, Cauly 코드를 추가 했다.
당연히 앱스토어에 다르게 올라가야 하므로 번들provisioning도 두개 필요 하다.

지금은 너무 오래되어서 이런 절차가 잘 기억이 나지 않아 찾아 보니 잘 정리가 되어 있다.

최신 Xcode에서 이러한 작업에 대한 자세한 절차를 기술해 놓은 페이지 링크를 걸어둔다.

이러한 작업은 유료 무료 뿐만 아니라 비슷한 앱을 다른 앱으로 만들때 유용하다.

2015년 1월 23일 금요일

sqlite를 iOS app에 이용하기 위한 방법 정리

알바 하며 얻은 내공들을 기록 한다.
알바로 하면 급하게 지식을 습득한다.
그냥 취미 삼아 할 때와 다르게 일정과 시간에 쪼들리며 결국은 해답을 찾게 되어 있다.


sqlite 스키마 보기

SELECT sql FROM sqlite_master WHERE name = 'tablename';

sqlite 프롬프트 나가기 

.exit

primary key

id integer primary key 라고 만들고 데이터를 넣지 않고 insert 하면
자동으로 증가 하며 insert 한다.

tableview custom cell 작업

http://www.ioscreator.com/tutorials/customize-tableviewcells-with-storyboards

sqlite와 tableview 연동 샘플 코드

http://www.appcoda.com/sqlite-database-ios-app-tutorial/

sqlite api의 리턴 값을 BOOL 변수로 받아 오류가 있다.
int로 리턴 값을 받아야 올바르게 동작 한다.

2015년 1월 13일 화요일

최근 iOS 개발을 하면서 알게된 tip들 기록

한 동안 iOS 개발에 손을 놓고 있다가 하려 하니 강산도 바뀌고 코드도 바뀌고
storyBoard도 사용해야 하고 어질 어질 하다. @.@


1. WebView에서 back 버튼을 만들고 back을 하다가 최초의 페이지에서 back 버튼을 누르면
이전 ViewController로 가려면

==>
- (IBAction)goBack:(id)sender {
    if ([ webView canGoBack])
    {
        [webView goBack];
    }
    else
    {
        [self.navigationController popViewControllerAnimated:YES];
    }
}

2. 조건에 따라 여러 segue중에 선택하여 viweController 전환
==>
if ( /* condition */ )
{
    [self performSegueWithIdentifier:@"XXXSegue" sender:sender];
}
else
{
    [self performSegueWithIdentifier:@"YYYYSegue" sender:sender];
}

3. 숫자를 문자열로 바꾸는 기존 코드는 이제 동작하지 않는다.

NSstring * str = [NSString stringWithFormat:@"%d", num];

==>
NSString * str = [[NSNumber numberWithInt:num] stringValue];


2015년 1월 12일 월요일

iOS altertView가 아닌 커스텀 팝업 view 만들기

스토리 보드를 처음으로 사용하다 보니 삽질을 하고 있다.
popover는  iPad에서만 되는 것으로 보인다.

iPhone app은 모든 viewController가 전체 화면으로 구현 해야 하는 것 같다.

storyboard에 어떻게 view 만을 정의 하고 그 것을 현재 viewController에 view에 추가 하느냐?

결론은 안되더라

현재 알바로 의뢰 받아 작업중인 앱에 디자인 가이드에서는 표준 alertView가 아닌
팝업 창이 디자인 되어 있으며

이 팝업 창이 뜰때 기존에 보이던 viewController의 전체 view는 dark색이 65% alpha 값으로
가려져야 하는게 미션이다.

구현 방법은 정답은 아닐수 잇으며 여러 삽질에 삽질 끝에 구현한 방법이다.


스토리 보드에 추가 하려는 viewController의 디자인을 마무리 한다.

 스토리 보드에 새로운 viewController를 추가 한 다음 어떠한 방법으로도 iphone에서는
pop을 할수 없음을 깨달았다. 그러므로 바로 포기하고 새파일을 만든다.
오래된 방법인 xib를 추가한다.

디자인을 한다.
포인트는 View를 추가해서 투명도 65%에 검정 뷰를 하나 추가 한다.

소스를 추가 해서 NotiView라는 클래스 파일과 헤더 파일을 작성 한다.

xib를 초기화 하는 init 코드가 필요 하다.
- (id) initWithCoder:(NSCoder *)aDecoder {
    if(self = [super initWithCoder:aDecoder]) {
        [[NSBundle mainBundle] loadNibNamed:@"NotiView" owner:self options:nil];
        [self addSubview:view];
    }
    return self;

}


닫기 버튼을 구현 하였다면 버튼을 IBAction을 연결 하고 다 음과 같은 코드로
뷰를 보이지 않게 할 수 있다.
#pragma -IB Action -

- (IBAction)CloseButtonClick:(id)sender {
    [self setHidden:YES];

}



스토리 보드로 돌아 와서 추가하려는 viewController에 view를 추가 하고 가장 하위 바닥에
viwe를 넣는다.
그리고 그 view의 클래스 파일을 NotiView로 연결 한다.


Hidden을 YES로 설정 하고 NotiView 를 IBOutlet으로 연결 하여 코드에서 Hidden을 NO
로 하여 팝업 창이 나타나는 효과를 내준다.

video