4

xcodeでいくつか試してみましたが、このコードをMapViewに使用しています。

セレクターの既知のクラス メソッドがありません'setRegion:animated:'

3 つの .h および .m ファイルを使用して 3 つの View Controller を作成しました。

私の間違いは何ですか?

.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を選択しました。

この問題を解決するには、クラスの名前を変更します (例:MyPlacesControllerなど)。クラス名は大文字で始めるのが慣例であることに注意してください。

于 2013-11-08T22:12:13.680 に答える
0

あなたの問題はネーミングの問題かもしれないと思います。作成したクラスは、持っている MKMapView のインスタンスと同じ名前が付けられます。慣例に従い、クラスに大文字で名前を付けますが、現在の問題を解決するには、使用してみてください

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

結果が異なるかどうかを確認します。以下のコメントに記載されているように、インスタンスをクラスのプロパティにする必要がありますが、元の回答では見逃していました。

于 2013-11-08T22:14:13.977 に答える
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 に答える