2017-08-23 8 views
0

私はすでに3つのビュー(view1、view2、view3)を追加したSrollViewを持っています。プログラムでview3にImageを追加したいと思います。 イメージをクリックすると、別のビューコントローラー(DestiationViewController)に移動します。 その後、NSUserDefaultを一度クリックすると、画像が一度クリックされるとDestinationViewController.Duringに移動し、2回目はDestinationViewControllerに直接移動します。プログラムでUIImageViewにSegueを追加すると、新しいViewControllerに転送されますObjective C?

私は初心者ですから、私にとって本当に難しいものを教えてください。

アドバンスありがとうございます。

答えて

0

UITapGestureRecognizer *newTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myTapMethod)]; 

[myImageView setUserInteractionEnabled:YES]; 

[myImageView addGestureRecognizer:newTap]; 




-(void)myTapMethod{ 
     // treat image tap 

     NSString *valueToSave = @"destinationVisited"; 
     [[NSUserDefaults standardUserDefaults] setObject:valueToSave 
forKey:@"preferenceName"]; 
     [[NSUserDefaults standardUserDefaults] synchronize]; 

     // Navigate 
     [self performSegueWithIdentifier:"SegueIdentifier" sender:self]; 
    } 

あなたがNSUserdefaultを設定したときにクリックすることができますNSUserdefaultの値を更新し、NSUserdefaultをアプリケーションデリゲートでチェックし、NSUserdefaultの値に従ってデスティネーションビューコントローラを開きます。

必要に応じてviewWillAppearまたはapp deleteメソッドでNSUserdefaultを確認してください。

NSString *savedValue = [[NSUserDefaults standardUserDefaults] 
    stringForKey:@"preferenceName"]; 

if(savedValue == @'destinationVisited') 
{ 
    [self performSegueWithIdentifier:"SegueIdentifier" sender:self]; 
} 
+0

ありがとうございました。いくつかのエラーが将来私を助けてくれる場合は、私はそれを行います.. – srsstyle

+0

あなたのアドバイスとして、このエラーが発生した後 - "キャッチされない例外 'NSInternalInconsistencyException' segueに識別子 'destination'を指定します。segueには実行ハンドルが必要です。また、-performをオーバーライドする必要があります。私のStoryBoardSegue識別子の名前は「宛先」であることに注意してください。ちょっと初心者なので、これが軽微なエラーであれば私を許してください。 – srsstyle

+0

segueの識別子を確認してください。segueが正しく設定されていないようです。 –

0

2つの方法があります。

  1. In AppDelegateでNSUserDefaultsの値を確認します。値がtrueの場合は、初期ビューコントローラをプログラム的に変更します。あなたはそれのためにGoogleすることができます。 「iOSでイニシャルビューコントローラをプログラム的に変更する方法」
  2. この方法は良くありませんが、シナリオを満たすことができます。初期ビューでは、ViewDidLoadメソッドはuserDefaults値をチェックします。 trueの場合は、Destination view Controllerを表示します。しかし、ここでは、少しの時間差で宛先コントローラを提示する必要があります。

    [self performSelector:@セレクタ(presentDestination)withObject:nil afterDelay:0.0];

このメソッドを使用するpresentDestinationメソッドでは、送信先のスクリーンを表示できます。方法以下のUIImageviewのclickeventの使用を設定するには

[self performSegueWithIdentifier:"SegueIdentifier" sender:self]; 

:あなたのUIImageViewのクリックイベントがあなたの先のビューコントローラを開くには、次のコードを追加で

+0

お返事ありがとうございます。今後必要に応じてお手伝いください。 – srsstyle

関連する問題