Video: Những tính năng hay trên iPhone mà bạn nên biết 2025
Bất kỳ đối tượng nào trong ứng dụng iOS của bạn tuân theo giao thức MKAnnotation là một đối tượng Chú thích; thông thường, các đối tượng Chú giải là các lớp hiện có trong mô hình ứng dụng của bạn. Công việc của một đối tượng Chú thích là biết vị trí của nó (tọa độ) trên bản đồ cùng với văn bản được hiển thị trong chú thích.
Giao thức MKAnnotation yêu cầu một lớp học thông qua giao thức đó để thực hiện các thuộc tính tọa độ. Nó cũng có thể tùy chọn thực hiện các tiêu đề và tài sản phụ đề. Trong trường hợp đó, văn bản đó sẽ được hiển thị trong chú thích chú thích khi người dùng chạm vào chú thích.
Chú thích được yêu cầu bởi giao thức để có các thuộc tính được in đậm trong đoạn mã sau:
@property (nonatomic, readwrite ) CLLocationCoordinate2D coordinate; @ tài sản (nonatomic, readwrite, copy ) Tiêu đề NSString *; @ tài sản (nonatomic, readwrite, copy ) phụ đề phụ NSString;
Đó là nó. Bạn đã có tài sản tại chỗ và khởi tạo.
Bạn muốn điểm chú ý của bạn là chú thích nữa.
Bạn cần phải quay trở lại đối tượng để tạo các chú thích nhưng đầu tiên bạn phải thêm một lớp chú thích vào nhóm Nhóm Mô hình bằng cách làm theo các bước sau:
-
Trong trình điều khiển Dự án, chọn Mẫu Classes, và sau đó nhấp chuột phải vào vùng chọn và chọn New File từ menu xuất hiện hoặc chọn File → New → File từ menu chính (hoặc nhấn ⌘ + N) để mở hộp thoại New File.
-
Trong cột bên trái hộp thoại, chọn Cocoa Touch dưới tiêu đề IOS, chọn mẫu Objective-C Class ở ngăn phía trên bên phải, sau đó kích Next.
Bạn sẽ thấy hộp thoại cho phép bạn chọn các tùy chọn cho tệp tin của bạn.
-
Nhập chú thích trong trường Lớp.
-
Chọn hoặc nhập NSObject trong trường Subclass Of và sau đó nhấp vào Next.
Lưu ý rằng hộp kiểm Mục tiêu cho iPad và XIB cho Giao diện Người dùng bị mờ bởi vì chúng không có liên quan ở đây - Các sự kiện xuất phát từ NSObject, chứ không phải bất kỳ loại bộ điều khiển chế độ xem nào.
-
Trong bảng Lưu xuất hiện, nhấp vào Tạo.
Tiếp theo, bạn cần thêm mã cần thiết cho một chú thích.
Thêm mã bằng chữ đậm vào Chú thích. h.
#import #import Chú thích mô tả: NSObject @property (nonatomic, readwrite) CLLocationCoordinate2D coordinate; @ tài sản (nonatomic, readwrite, copy) NSString * title; @ tài sản (nonatomic, readwrite, copy) NSString * phụ đề; -d
Bạn đang sử dụng một lớp Chú giải chung để hiển thị các điểm ưa thích.Khi bạn xây dựng ứng dụng, bạn cũng có thể bao gồm thêm thông tin về các điểm ưa thích và các thông tin khác, và tạo một lớp PointofInterest.
Sau đó, bạn có thể làm cho nó một Chú thích Phân lớp. Trong một chú thích, bạn cũng có thể có Chế độ xem Phụ đề Chú thích Bên phải và Trái, hiển thị ở bên phải và bên trái của bong bóng chú thích tiêu chuẩn.
Chế độ xem chú thích thường được sử dụng để liên kết tới thông tin chi tiết hơn về chú thích. Ngoài ra, bạn có thể liên kết đến một số thứ như EventController để hiển thị thông tin về một PointofInterest. Chỉ cần thức ăn cho tư tưởng.
#import "Điểm đến.h" #import "Sự kiện.h" #import "Chú thích h" @interface Trip () @property (strong, nonatomic) NSDictionary * destinationData; @property (strong, nonatomic) Điểm đến * đích; @ tài sản (mạnh, nonatomic) Sự kiện * các sự kiện; @ tài sản (mạnh, nonatomic) NSMutableArray * pois; -d
Bây giờ bạn có thể thêm mã đậm trong Liệt kê 17-11 để initWith DestinationIndex: trong Chuyến đi. m. Điều này sẽ chuyển dữ liệu điểm-quan tâm trong plist (POIs) thành chú thích (okay, chỉ một) và thêm đích như là một chú thích để khởi động.
- (id) initWithDestinationIndex: (int) destinationIndex {self = [siêu init]; if (self)) {NSString * filePath = [[NSBundle mainBundle] pathForResource: @ "Điểm đến" ofType: @ "plist"]; NSDictionary * destination = [Từ điển NSDictionaryWithContentsOfFile: filePath]; NSArray * destinationArray = [đích đến objectForKey: @ "DestinationData"]; _destinationData = [destinationArray objectAtIndex: destinationIndex]; _destination = [[Phân bổ đích] initWithDestinationIndex: destinationIndex]; events = [[Phân bổ sự kiện] initWithDestinationIndex: destinationIndex]; NSArray * poiData = tự. đíchData [@ "POIs"]; _pois = [[NSMutableArray alloc] initWithCapacity: [số lượng PoiData] +1]; [_tính năng addObject: tự. Nơi Đến]; cho (NSDictionary * aPOI trong poiData) { Chú thích * chú thích = [[Annotation alloc] init]; CLLocationCoordinate2D phối hợp; phối hợp. vĩ độ = [aPOI [@ "Latitude"] doubleValue]; phối hợp. kinh độ = [aPOI [@ "Kinh độ"] doubleValue]; chú thích. phối hợp = phối hợp; chú thích. title = aPOI [@ "Tiêu đề"]; chú thích. phụ đề = aPOI [@ "Phụ đề"]; [tự. pois addObject: chú thích]; } } return self;}
Như bạn thấy, bạn đang tạo một Chú thích cho mỗi điểm quan tâm trong mảng poiData và thêm nó vào một mảng bạn tạo ra - một mảng sẽ giữ tất cả các chú thích bạn muốn hiển thị trên bản đồ.
Nếu bạn nhìn kỹ, bạn có thể thấy Destination cũng đang được thêm vào mảng pois. Bằng cách đó, nó cũng sẽ hiển thị trên bản đồ.
Bạn phải thêm một số phương pháp mới vào giao diện để Trip có thể trả lại các chú thích (và một tiêu đề bản đồ). Bạn cũng cần phải cập nhật Tripinterface. Để làm điều đó, thêm mã đậm vào Chuyến đi. h.
@interface Trip: NSObject - (UIImage *) destinationImage; - (NSString *) destinationName; - (CLLocationCoordinate2D) đích kết hợp; - (id) initWithDestinationIndex: (int) destinationIndex; - (NSString *) thời tiết; - (NSUInteger) numberOfEvents; - (NSString *) getEvent: (NSUInteger) chỉ mục; - (NSArray *) createAnnotations; - (NSString *) mapTitle; -d
Bây giờ bạn có thể thêm tất cả các phương pháp Chuyến đi sẽ được sử dụng bởi MapController.Bắt đầu bằng cách thêm phương pháp createAnnotations vào Chuyến đi. m.
- (NSArray *) createAnnotations {return self. pois;}
Mặc dù pois là một mảng có thể thay đổi, bạn trả lại nó như một mảng cơ bản vì đó là tất cả những gì cần thiết. MapController sẽ không thêm bất kỳ chú thích nào vào nó.
Bạn cũng cần phải thêm một phương pháp để trả lại bản đồ. Thêm phương pháp maptitle vào Chuyến đi. m.
- (NSString *) mapTitle {return self. Nơi Đến. destinationName;}
