2013-11-10 6 views
0

У меня есть ViewController, который содержит UITableView, вид карты, а также контроль сегмента как на рисунке ниже:Нет видимых @interface для «UITableView» заявляет селектор «setShowsUserLocation:»

[введите описание изображения здесь] [ 1]

TestViewController.h

@interface TestViewController UIViewController:<MKMapViewDelegate,CLLocationManagerDelegate,UITableViewDataSource,UITableViewDelegate> {CLLocationManager * locationManager;} 

TestViewController.m

MyMap.delegate=self; 
// Ensure that you can view your own location in the map view. 
[MyMap setShowsUserLocation:YES]; 

UItableView работает нормально, но он показывает ошибку, когда я пишу «[MyMap setShowsUserLocation: YES];"

Вот сообщение об ошибке: Нет видимых @interface для 'UITableView' заявляет селектор 'setShowsUserLocation:'

заранее спасибо

+1

... а где изображение? –

+0

К сожалению, я не мог поместить его туда, так как я новый пользователь! – Mohammed

ответ

2

MyMap объявлен как UITableView в @interface. Измените его на MKMapView.

1

Осмотрите свою ошибку более тщательно. В соответствии с этим класс MyMap является подклассом UITableView, а не MKMapView, как и должно быть.

Так, в MyMap.h файле, изменения:

@interface MyMap : UITableView 

в

@interface MyMap : MKMapView 

Какую ошибку говорит вам, что в классе UITableView, нет никакого способа по имени setShowsUserLocation, и это правильно. Следовательно, изменение родительского класса на MKMapView.


В случае, если ваш outlet неправильно установлен, исправить ее, удалив нужный outlet из UITableView и установить его к нужному MKMapView объекта.

+0

Вы ошибаетесь. MyMap - это не класс, а объект. Я согласен, что это плохой стиль кода. Но все равно. –

+0

MyMap - это выход! – Mohammed

+0

Он создал объект этого класса в своем коде. Он должен модифицировать класс **, потому что объекты создаются из класса **. Поэтому, только если он изменяет класс MyMap как подкласс «MKMapView», будут ли выполняться объекты. –

Смежные вопросы