0

マップビューを表示するアプリを作成しています。ここで、MKMapType を標準からハイブリッドに変更するオプションをユーザーに提供したいと考えています。

そのために、マップ タイプを設定するスイッチを含む別のビュー コントローラーへのセグエを作成しました。トランジションは、部分的なカールを使用したモーダルです。スイッチの値にアクセスするために、AppDelegate で fotoMode と呼ばれる BOOL を導入しました。この変数が YES に設定されている場合 (およびスイッチが ON に設定されている場合) は、マップを再描画したいと思います。

- (IBAction) FotoModusSwitchChanged:(UISwitch *)sender 
{
 AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];    
if(sender.isOn)
 {
    appDelegate.fotoMode=YES;
 }
 else 
 {
    appDelegate.fotoMode=NO;
 }
}

マップ ビューのビュー コントローラーの VieWillAppear、ViewDidAppear、ViewDidLoad、ViewWillLayoutSubviews に次のコード行を含めましたが、機能しません。

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];    
if (appDelegate.fotoMode) {
    [self.MapOutlet setMapType:MKMapTypeHybrid];
}
else
{
    [self.MapOutlet setMapType:MKMapTypeStandard];
}

私が間違っていることは何ですか?ありがとう。

PS: MKMapType を手動で Hybrid または Standard に設定すると動作します...

4

2 に答える 2

0

あなたのコードは私には正しいようですが、「fotoMode」の宣言に問題があると思います。

Appdelegate.hファイルの下でBOOLを定義していることを確認してください

@property(nonatomic、assign)BOOL fotoMode;

BOOLを正しく宣言しないと、正しい値を設定して取得することができません。

助けてくれることを願っています...

于 2012-10-05T18:59:03.260 に答える