이 블로그 검색

2012년 4월 23일 월요일

appDelegate 만들기

iOS 는 특이한 방식으로 전역 함수를 만들어 쓸 수 있다.

방법은 "프로젝트이름AppDelegate.m" 파일에 메서드를 만들어 놓고

self.appDelegate 메서드 이름,  파라메터, .... 형식으로 쓰면 된다.

Ex)
CyberMeritzFireLandAppDelegate.m 파일에 아래와 같은 메서들 만든다.



- (void)addViewType:(UIViewController *)view type:(NSInteger)type
{
    
    if (type == 1)
    {
        m_naviView[0].hidden = NO;
        m_naviView[1].hidden = YES;
        m_naviView[2].hidden = YES;
        m_naviView[3].hidden = YES;
        m_naviView[4].hidden = YES;
        m_naviView[5].hidden = YES;
        m_naviView[6].hidden = YES;
        m_naviView[7].hidden = YES;
        m_naviView[8].hidden = YES;     
    }
    else if (type == 2)
    {
        //, 전체메뉴, 확인
        m_naviView[0].hidden = YES;
        m_naviView[1].hidden = NO;
        m_naviView[2].hidden = YES;
        m_naviView[3].hidden = YES;
        m_naviView[4].hidden = YES;
        m_naviView[5].hidden = YES;
        m_naviView[6].hidden = YES;
        m_naviView[7].hidden = YES;
        m_naviView[8].hidden = YES;

        [m_naviBtn2[0] addTarget:self action:@selector(eventHome) forControlEvents:UIControlEventTouchUpInside];
        [m_naviBtn2[1] addTarget:self action:@selector(eventMenu) forControlEvents:UIControlEventTouchUpInside];
        [m_naviBtn2[2] addTarget:view action:@selector(eventNaviOk) forControlEvents:UIControlEventTouchUpInside];
    }
}




** 이 메서드를 아무데서나,


 [self.appDelegate addViewType:self type:1];
 [self.appDelegate addViewType:sendEmailView type:2];
 ..........


이런식으로 쓸 수 있다..







2012년 4월 21일 토요일

UITextField Delegate - 리턴키 누르면 특정 동작하게

이 녀석을 오버라이드 해 주면 된다.
-(void)textFieldShouldReturn:(UITextField*)textField
{

}

보너스로, 텍스트 필드를 누르면 작동하는 Action은 다음의 delegate 함수를 이용한다.

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    [dateArrPopView1 removeFromSuperview];  // dateArrPopView1 뷰를 제거한다.
    [view_date removeFromSuperview];        // view_date 뷰를 제거한다.

참고로 이 딜리게이트는 키보드가 올라감에 따라 뷰가 같이 올라가는 기능을 구현해 줄때 많이 쓴다.

- (void)textFieldDidBeginEditing:(UITextField *)textField
{

    //키보드 호출 화면을 위로 이동  
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];
    CGAffineTransform transform = CGAffineTransformMakeTranslation(0.0, -250.0);
    [self.view setTransform:transform];
    
    [UIView commitAnimations];
     ///////////
       

    [dateArrPopView1 removeFromSuperview];
    
     // -> 만약 textField가 여러개 있고 그 중 특정한 텍스트필드에만 기능을 넣으려면
     // 아래와 같이 tag를 주면된다.

    if([textField tag] == 2){   
        [labState1 setText:@""];

    }
}

// 키보드를 내릴때 기능을 넣고 싶으면 아래와 같이...(화면을 원상 복귀하는 기능을 넣었다.)

- (void)textFieldDidEndEditing:(UITextField *)textField
{
    //키보드 Done 화면을 원래 위치로 
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];
    CGAffineTransform transform = CGAffineTransformMakeTranslation(0.0, 0.0);
    [self.view setTransform:transform];
    
    [UIView commitAnimations];
}




2012년 4월 15일 일요일

IOS 투명뷰 만들기

1. 뷰 자체의 설정을 clear color 로(오른쪽 뷰 설정 화면) 바꾼다.
2. 서뷰 뷰 내 이미지 뷰를 올려 이미지 뷰 자체의 opaque 를 조정한다.

주의) ==> 뷰 자체의 설정을 clear color로 안해주면 서뷰 뷰의 이미지뷰에서 아무리 작업을 해도 되지 않는다.

2012년 3월 27일 화요일

[iOS] View의 중첩

아이폰 개발에서
뷰에 뷰를 겹칠 때,
항상 왼쪽의 objects 박스의 아래쪽에 위치한 뷰가 위(표면)에 나타난다.
즉, 위에 위치한 뷰는 아래 위치한 뷰에 의해 가려진다.

[iOS] Button 사용시

아이폰 개발에서 버튼에 셀렉트 효과를 줄 때 state Config 메뉴에서 각각 상태에 따라 다른 이미지를 넣는다.

* Default -> 평상시(버튼 안 눌렀을 때)
* Selected -> 버튼이 선택되었을 때, 즉 한번 선택되면 계속 변한 상태(이미지)로 된다.
* Highlighted -> 버튼을 눌렀을때 변하고, 떼면 다시 원래의 상태(이미지)로 돌아간다. - 안드로이드의 셀렉트와 같다..(헛갈리기 쉽다..ㅡㅡ;)

2012년 3월 15일 목요일

[iOS] ASIHTTPRequest (아이폰 통신 API) 사용시 추가해야 할 프레임 워크

아이폰 통신 모듈에서 쓰이는 ASIHTTPRequest 를 사용시 반드시 다음의
FrameWork 들을 추가시켜야 한다. 그렇지 않으면 계속 에러 뿜는다.. ㅡㅡ;
(아마 Undefined symbols for architecture i386 혹은 ... i386 not found ....  뭐 이런류의 에러 메세지가 나올 것이다...)

<아래의 글에서 보면 - 퍼옴>
CFNetwork, SystemConfiguration, MobileCoreServices, CoreGraphics, libz.dylib
 이 다섯 녀석들이다...

2) Link with CFNetwork, SystemConfiguration, MobileCoreServices, CoreGraphics and zlib

Open the settings for your target by clicking on the blue bar at the very top of the Xcode sidebar:



Open the Build Phases tab, expand the box labeled Link Binary With Libraries then click the plus button.



Choose CFNetwork.framework from the list, and click Add:



Repeat the last two steps to add the following: SystemConfiguration.frameworkMobileCoreServices.framework,CoreGraphics.framework and libz.dylib.