비디오: What’s on my iphone (2019) It’s Yas iPhone Secrets & Best Apps!! 2024
대부분의 시간 동안, 사용자는 iOS 응용 프로그램에서 일어나는 일을 제어 할 수 있습니다. 버튼과 다른 인터페이스 요소를 제공하지만 사용자는 수행 할 작업과 탭할 인터페이스 요소를 선택합니다. 모달 뷰는 사용자 컨트롤을 방해합니다. 그것들은 화면 상에 나타나며, 사용자가 그 안에 들일 수는 있지만, 사용자가 그것들을 해산 할 때까지 그들은 정면과 중앙에있게된다.
앱의 나머지 부분을 계속 사용하기 전에 사용자가 무언가를하거나 문제를 해결하기를 원할 때 사용됩니다. 사용자가 홈 버튼을 사용하여 다른 앱으로 이동할 수 있기 때문에 기기가 잠겨 있지 않지만 앱과 관련하여 모달보기가 해제 될 때까지 고정됩니다.
프로토콜 을 만드는 것입니다. 사용자가 작업을 선택하거나 취소 할 때 모달보기는 제시 컨트롤러의 대리자 메서드에 메시지를 보냅니다. 그러면 요청 컨트롤러는 모달 컨트롤러를 닫습니다. 이 접근법을 사용하면 Modal 컨트롤러를 닫기 전에 제시하는 컨트롤러가 필요한 모든 데이터를 얻을 수 있습니다. 그것이 당신이 여기서 구현할 패턴입니다.
일을 시작하려면 코드 20-1의 굵게 표시된 코드를 DestinationController에 추가하십시오. h.
#import
@protocol DestinationControllerDelegate ; @interface DestinationController: UIViewController @property (weak, nonatomic) IBOutlet UITableView * destinationTableView; @property (강하고 비 구조) id 대리자; @property (비 원자, 읽기 전용) NSUInteger selectedDestination; - (IBAction) 취소: (id) 발신자; -d @protocol DestinationControllerDelegate @required - (void) destinationController: (DestinationController *) 컨트롤러 didFinishWithSave: (BOOL) save; -d Objective-C 언어는 메소드 목록 (선언 된 속성 포함)을 프로토콜로 형식적으로 선언하는 방법을 제공합니다. 이 책에서는 프레임 워크 제공 프로토콜을 광범위하게 사용했으며, 이제는 자신의 프로토콜을 정의하고 있습니다.
@protocol SimpleDelegate @optional - (void) doNothing; -d
프로토콜에서 @required와 @optional 메소드를 모두 가질 수 있습니다. 그것들을 함께 묶는 것이 일반적이지만 원하는 경우 그들을 분산시킬 수 있습니다.
@required 또는 @optional이 지정되지 않으면 @required가 가정됩니다. 그러나 필요한 것이 무엇이며 선택 사항이 무엇인지 구체적으로 설명하는 것이 좋습니다. @protocol DestinationControllerDelegate: 문 (상단)은 프로토콜이 진행 중임을 컴파일러에 알려줍니다. @class 문과 마찬가지로 "Trust me, 프로토콜을 찾을 수 있습니다. "당신이 이것을 추가했기 때문에 여기에 필요합니다:
@property (강하고 비 구조) id delegate;
이 문은 컴파일러에게 델리게이트에 할당 된 것이 무엇이든간에 입력 된 값을 검사하여 DestinationControllerDelegate 프로토콜을 구현하는지 확인합니다.
또한 사용자가 선택한 대상을 결정하기 위해 ViewController에서 사용할 selectedDestination 속성을 추가했습니다. 다른 개체가 설정할 수있는 이유가 없으므로 읽기 전용으로 설정 한 것입니다.
또한 Cocoa Touch 프레임 워크에서 UITableViewDelegate와 UITableViewDataSource라는 두 가지 프로토콜을 채택했습니다.이 프로토콜은 테이블보기를 관리하는 데 사용됩니다.
다음에는 나중에 사용해야 할 일부 헤더 파일에 대해 굵게 표시된 코드로 DestinationController 구현을 업데이트해야합니다. # import DestinationController (999) #import "DetailViewController.h"
#import "AppDelegate. h"
@interface DestinationController () -d @implementation DestinationController 배관 공사가 끝나면 DestinationController에서 무엇이 계속 될지 살펴볼 수 있습니다.