私は、正常に動作しているアプリケーションで画像を動かしています。問題は、ユーザーがそのビューに戻ったときに画像を保持したいということです。現時点では、私は、画像中心を保持するための文字列を使用しています:NSUserDefaultsを使用してイメージ座標を保存する
NSString *centre = NSStringFromCGPoint(image.center);
私はtheCentreと呼ばれるNSUserDefault変数があります。私が使用して保存しよう
theCentre = [NSUserDefaults standardUserDefaults];
:
[theCentre setObject:centre forKey:@"centre"];
をログを出力すると、次のようになります。
{280, 320}
これは素晴らしいです。 viewDidLoadでは、全く同じログを試しましたが、返されています(null)。私はそれが正しいことを保存していないことを意味します。私はここに何か根本的なものがありません。なぜなら私のアプリケーションのどこかでNSUserDefaultsを使用していて、それはうまくいきました。事前に多くの感謝。
編集:これは試してみて、援助のデバッグ:)
-(void)getBounds
{
lowerBoundX = 250;
upperBoundX = 310;
lowerBoundY = 290;
upperBoundY = 350;
}
#pragma mark -
#pragma mark UIPanGestureRecognizer selector
- (void) dragGesture:(UIPanGestureRecognizer *) panGesture
{
[self getBounds];
CGPoint translation = [panGesture translationInView:self.view];
switch (panGesture.state) {
case UIGestureRecognizerStateBegan:{
originalCentre = dragImage.center;
}
break;
case UIGestureRecognizerStateChanged:{
dragImage.center = CGPointMake(dragImage.center.x + translation.x,
dragImage.center.y + translation.y);
}
break;
case UIGestureRecognizerStateEnded:{
if (((dragImage.center.x >= lowerBoundX) && (dragImage.center.y >= lowerBoundY) &&
(dragImage.center.x <= upperBoundX) && (dragImage.center.y <= upperBoundY))) {
dragImage.center = CGPointMake(280, 320);
[dragImage setUserInteractionEnabled:NO];
theCentre = [NSUserDefaults standardUserDefaults];
NSString *centre = NSStringFromCGPoint(dragImage.center);
[theCentre setObject:centre forKey:@"centre"];
NSLog(@"%@", [theCentre objectForKey:@"centre"]);
[theCentre synchronize];
break;
}
[UIView animateWithDuration:0.5
animations:^{
dragImage.center = originalCentre;
}
completion:^(BOOL finished){
}];
}
break;
default:
break;
}
[panGesture setTranslation:CGPointZero inView:self.view];
}
-(IBAction)clear{
[UIImageView animateWithDuration:0.5 animations:^{
dragImage.center = CGPointMake(100, 200);
}];
[dragImage setUserInteractionEnabled:YES];
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
NSLog(@"%@", [theCentre objectForKey:@"centre"]);
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(dragGesture:)];
[dragImage addGestureRecognizer:panGesture];
[dragImage setUserInteractionEnabled:YES];
}
は、私は同期を実装しますが、何も変更していない、非常に多くの@Pawelありがとうございます。そんな意味合いもありました!私はコード全体で私の投稿を編集し、うまくいけば解決策を見つけるでしょう! –
theCenterプロパティにNSUserDefaultsオブジェクトが含まれていますか? dragGesture:メソッドで作成したようですが、viewDidLoadメソッド用に作成されたものがあるかどうかはわかりません。 – Pawel
私はそれを変数ではなく、プロパティとして持っています。私が間違っている場所ですか? –