0
我在我的應用程序中移動圖像,這是正常工作。問題是,當用戶回到該視圖時,我想保留這些圖像。目前,我使用的是字符串來保存圖像中心:使用NSUserDefaults來存儲圖像座標
NSString *centre = NSStringFromCGPoint(image.center);
我有一個NSUserDefault變量稱爲theCentre:
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
我只將它作爲一個變量,而不是一個屬性;我錯了嗎? –