लागू करने में कठिनाई मैं अपने आईओएस ऐप में NSUndoManager
को लागू करने की कोशिश कर रहा हूं। मुझे काम करने के लिए पूर्ववत कार्यक्षमता मिली है, लेकिन फिर से नहीं है। मैं आईओएस विकास के लिए काफी नया हूं और यह पहली बार है कि मैंने NSUndoManager
का उपयोग किया है, इसलिए यह शायद कुछ मामूली है।NSUndoManager redo function
मेरा ऐप एक पेंटिंग/नोट लेने वाला ऐप है, मेरे पास पिछले दस UIImage
एस (मुझे नहीं पता कि यह सबसे प्रभावी तरीका है) के साथ एक पूर्ववत/फिर से स्टैक है। जब उपयोगकर्ता वर्तमान छवि में परिवर्तन करता है, तो पुरानी छवि को ढेर पर धक्का दिया जाता है, और सरणी में पहली छवि हटा दी जाती है यदि सरणी में पहले से ही दस वस्तुएं हैं। मेरे पास int
इंस्टेंस वैरिएबल है जो मैं सरणी में ऑब्जेक्ट्स का ट्रैक रखने के लिए उपयोग करता हूं और सुनिश्चित करता हूं कि सही छवि प्रदर्शित होती है। मेरे कोड इस तरह दिखता है:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
if (oldImagesArrays.count >= 10) {
[oldImagesArrays removeObjectAtIndex:0];
}
UIImage * currentImage = pageView.canvas.image;
if (currentImage != nil) {
[oldImagesArrays addObject:currentImage];
undoRedoStackIndex = oldImagesArrays.count -1;
}
[...]
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
UIImage * currentImage = [oldImagesArrays lastObject];
if (currentImage != pageView.canvas.image) {
[undoManager registerUndoWithTarget:self selector:@selector(resetImage)
object:currentImage];
}
}
// Gets called when the undo button is clicked
- (void)undoDrawing
{
[undoManager undo];
[undoManager registerUndoWithTarget:self
selector:@selector(resetImage)
object:pageView.canvas.image];
undoRedoStackIndex--;
}
// Gets called when the redo button is clicked
- (void)redoDrawing
{
[undoManager redo];
undoRedoStackIndex++;
}
- (void)resetImage
{
NSLog(@"Hello"); // This NSLog message only appears when I click undo.
pageView.canvas.image = [oldImagesArrays objectAtIndex:undoRedoStackIndex];
}
जब मैं पूर्ववत क्लिक करें या बटन resetImage बुलाया जाना चाहिए फिर से करना, और (undoRedoStackIndex के वर्तमान मूल्य) मेरी छवि ढेर में अगले या पिछले ऑब्जेक्ट के लिए वर्तमान छवि सेट , यह तब होता है जब मैं पूर्ववत क्लिक करता हूं, लेकिन फिर से नहीं करता।
समाधान & & || इसे करने के बेहतर तरीके की सराहना की जाएगी।
@ जोश कैसवेल मैंने अपने प्रश्न में कुछ स्पष्टीकरण जोड़ा है। – Anders