내가 MKMap 놀아되고 일부 사용자 지정 위임가 여기에 작동하지 않습니다 그리고 난 정말 이유를 모르는와 항상 false respondsToSelector :IOS - 사용자 정의 위임
LocationViewController :/
여기 내 코드입니다. 시간
#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
@protocol LocationViewDelegate <NSObject>
@required
- (void)didReceiveLocation:(CLLocation *)location;
@end
@interface LocationViewController : UIViewController <CLLocationManagerDelegate>
@property (strong, nonatomic) IBOutlet UILabel *locationLabel;
@property (nonatomic, strong) id<LocationViewDelegate> delegate;
- (IBAction)sendLocation:(id)sender;
@end
LocationViewController.m
,839,는 MapViewController.h
#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
#import "LocationViewController.h"
@interface MapViewController : UIViewController <LocationViewDelegate>
@end
MapViewController.m 난 항상 "아니"라는 메시지를 받고 있어요
[...]
- (void)didReceiveLocation:(CLLocation *)location {
_mapView.centerCoordinate = location.coordinate;
}
[...]
은 NO 그 respondsToSelector
수익률을 의미한다. 며칠 전에 나는 똑같은 예를 보여 주었고 모든 것이 잘되었다.
누군가 여기서 문제를 볼 수 있습니까?
1. 확인하기 위해 먼저 MapViewController를 LocationViewController의 위임자로 설정하고 있습니까? 즉, MapViewController.m에서 : self.locationViewController.delegate = self; 2. 대리자 속성에 _delegate로 액세스하고 있습니다. LocationViewController.m에서 합성하고 있는지 확인하십시오. 제쳐두고, 제쳐두고 MapViewController가 LocationViewController 인스턴스를 소유하고 있다고 가정합니다. 따라서 Circular 참조를 피하기 위해 LocationViewController의 delegate 속성을 'weak'로 설정하는 것이 좋습니다. @property (비 원자력, 약함) id 대리자; –
thomh
실제로 마지막 연습에서 self.locationViewController.delegate = self와 같은 smgt를 수행 할 필요가 없었습니다. 이것 없이는 일하고있었습니다. 하지만이 예제에서이 코드 줄을 추가하려고 시도했지만 여전히 작동하지 않습니다. 그리고 네, 모두 잘 합성되고 있습니다 – Yaman
그래, 어디서 문제가 발생했는지 알았어. locationViewController.delegate에 대해 당신이 옳았습니다. 내 두 컨트롤러가 TabBarController에서 2 개의 다른 컨트롤러를 사용하기 때문에 AppController.delegate = mapController를 AppDelegate에 추가해야했습니다. – Yaman