4

我在 xcode 中尝试了一些东西,我将这段代码用于我的 MapView。

选择器没有已知的类方法'setRegion:animated:'

我用 3 个 .h 和 .m 文件制作了三个视图控制器。

我的错误是什么?

.m

#import "myPlacesAllTime.h"
#import <MapKit/MapKit.h>



@interface myPlacesAllTime ()

@end

@implementation myPlacesAllTime

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

    - (void)viewDidLoad
    {
        [super viewDidLoad];

        MKCoordinateRegion startRegion = { {0.0,0.0}, {0.0,0.0} };
        startRegion.center.latitude = 35.88905;
        startRegion.center .longitude = -17.605591;
        startRegion.span.latitudeDelta = 0.1;
        startRegion.span.longitudeDelta = 0.1;
        [myPlacesAllTime setRegion:startRegion animated: NO];
    }

。H

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>

@interface myPlacesAllTime : UIViewController <MKMapViewDelegate>{

    __weak IBOutlet MKMapView *myPlacesAllTime;

}

@end
4

3 回答 3

3

myPlacesAllTime您为和该类的 实例变量选择了相同的名称。

要解决该问题,请重命名该类,例如 toMyPlacesController或类似。请注意,约定是让类名以大写字母开头。

于 2013-11-08T22:12:13.680 回答
0

如果您打算setRegion:animated:在类级别使用,请确保您已定义如下方法:

+ (void)setRegion:(OBJ_Type)iType animated:(OBJ_Type)iAnimated {

如果您打算setRegion:animated:在对象级别使用,请确保您已经定义了这样的方法:

- (void)setRegion:(OBJ_Type)iType animated:(OBJ_Type)iAnimated {

在这种情况下,您需要像这样调用此方法:

[self setRegion:PARAM animated:PARAM];
于 2013-11-08T22:41:09.790 回答
0

我认为您的问题可能是命名问题。您创建的类与您拥有的 MKMapView 实例的名称相同。我会遵循约定并用大写字母命名您的课程,但要解决当前问题,请尝试使用

[self.myPlacesAllTime setRegion:startRegion animated:NO];

看看它是否有不同的结果。您必须使您的实例成为该类的属性,如下面的评论中所述,我在原始答案中错过了这一点。

于 2013-11-08T22:14:13.977 回答