본문 바로가기

프로그래밍

(65)
17. 닙 파일 재사용 및 모달 뷰 만들기 이전에 개발한 프로그램에서 닙 파일을 재사용해서 모달 뷰를 만들어 보도록 하겠습니다. 위의 사진과 같이 오른쪽 상단에 + 버튼을 만들어서 버튼을 누르면 밑에서 위로 올라오는 모달뷰를 만들도록 하겠습니다. 1. RootViewController.xib 를 열고 라이브러리에서 Bar Button Item을 찾아서 메인 윈도우로 드래그 합니다. 2. addButtonItem에 대한 IBAction, IBOutlet, 프로퍼티 선언을 추가합니다. 3. addButtonItem에 대해서 프로퍼티의 @synthesize, dealloc에서 release, addButtonPressed 메로스를 추가합니다. 4. 인터페이스 빌더에서 마무리 합니다. RootViewController.h #import @interfac..
16. 내비게이션 기반 템플릿 사용 및 테이블 뷰 다음과 같은 앱을 만들기 위해서 내비게이션 기반 템플릿을 사용할 것입니다. 프로젝트를 새로 만들기 위해서 Xcode에서 File -> NewProject 를 선택합니다. Navigation-based Application을 선택하고 프로젝트 이름을 쓰고 저장합니다. 이때 "Core Data" 옵션은 체크하지 않습니다. 이 프로젝트는 내비게이션 컨트롤러가 제공됩니다. 여기에는 뒤로가기 버튼, 타이틀 바, 그리고 뷰 히스토리가 제공되므로 사용자가 헤매지 않고 데이터를 찾아볼 수 있습니다. 뷰 전환시 애니메이션 처리도 해줍니다. 프로젝트를 생성하면 테이블 뷰가 기본 제공됩니다. 우선 이 테이블 뷰에 넣어줄 데이터를 가죠오도록 하겠습니다. RootViewcontroller.h #import @interface ..
15. 텍스트필드 사용 및 키보드 on/off 기능 구현하기 인터페이스 빌더에서 위와 같이 텍스트 필드를 View에 만들어 줍니다. 텍스트 필드드의 속성에는 여러가지가 있는데 그중에 많이 사용하는 것들은... Text - 입력된 텍스트 Placeholder - 문자열이 비어있을때 보이는 텍스트 Clear When Editing Begins - 텍스트필드를 클릭했을 경우 입력되어 있던 문자열이 지워진다. Font - 폰트 이정도 입니다.. 인터페이스 빌더를 저장(Cmd+S) 한 후, X-code를 빌드해 보면 텍스트 필드가 나오고 텍스트 필드를 클릭하면 키보드가 밑에서 튀어 나와 글씨를 입력할 수 있습니다. 그러나 글씨를 모두 입력한 후에도 키보드를 내릴 수가 없습니다. 키보드를 숨겨주기 위해서는 텍스트 필드에게 포커스를 놓으라고 요청해야 합니다. (최초 응답자 자..
14. 메모리 관리 1. alloc, new, copy, 또는 mutableCopy 메소드로 다른 객체를 생성했다면, 직접 release 해야한다. release 메시지를 나중에 보내고 싶다면, 오토릴리스 풀(autorelease pool)에 넣을 수도 있다. 2. 위와 같은 경우가 아니라면, 객체가 이미 오토릴리스 풀에 들어있고 리테인 카운트는 1이 된다.
13. 프로퍼티의 속성 키워드와 설명 readonly - 프로퍼티가 변경되지 않도록 할때 사용한다. 컴파일러가 세터를 자동으로 생성해 주지 않는다. retain - 객체의 값을 다룰 때 주로 사용한다. 메모리 해제를 위해 retain count를 사용하는데 값이 0이 되면 메모리에서 해제한다. readwrite - 프로퍼티를 변경할 필요가 있을 때 사용한다. 컴파일러는 게터와 세터를 생성해 준다. (기본값) copy - 전달된 원래의 값이 변경되지 않도록 할 때 사용한다. assign - int 나 float와 같은 기본형을 다룰 때 사용한다. 객체를 다룰 때에는 메모리 관리 측면에서 적절하지 않다. ※ nonatomic - 뮤텍스( mutex )를 사용하지 않음 : 멀티 쓰레드 환경 아님.
12. 헤더파일에 대한 설명 // 이것은 C언어의 #include와 동일하다. 그러나 자동으로 중복 인클루드 되는 것을 막아준다. #import // @interface - 클래스 정의를 나타내는 키워드 // 하나의 클래스가 구현할 수 있는 프로토콜의 수의 제한은 없다. @interface ClassName : 상속 { // IBOutlet으로 명시하면 인터페이스 빌더가 인식해서 이 변수와 UI 컴포넌트를 연결할 수 있다. IBOutlet UIPickerView *tweetPicker; // 여기에 클래스의 필드를 선언할 수 있다. NSArray* activities; } // @property 키워드는 이것이 컴파일러에 의해서 게터와 세터가 만들어질 프로퍼티라고 알려준다. @property ( nonato..
11. 피커 사용하기 (UIPickerView) 헤더파일. #import // 피커를 사용하기 위해서는 아래와 같은 2개의 프로토콜을 반드시 사용해야 한다. @interface InstaTwitViewController : UIViewController { NSArray* activities; // 피커에 넣어줄 데이터 소스를 담아줄 배열 NSArray* feelings; IBOutlet UIPickerView *tweetPicker; } @end .m파일. // 뷰를 로드한 후 배열을 초기화 한다. 피커에 넣어줄 데이터 소스이다. - (void)viewDidLoad { [super viewDidLoad]; activities = [[NSArray alloc] initWithObjects:@"sleeping",@"eating",@"working",ni..
10. 시작화면 적용하기 앱이 시작될 때까지 걸리는 로딩 시간에 표시 화면을 지정할 수 있다. iPhone 3GS - 크기 : 320 * 480 - 이름 : Default.png iPhone 4 - 크기 : 640 * 960 - 이름 : Default@2x.png 두 파일을 Resources폴더에 넣어둔다.