StromanBackForward
功能
它是一个容器,用于实现类似于网页或 Word 的撤销和恢复功能。它通过将状态抽象为对象,并操作状态对象来实现撤销和恢复功能。
Demo 演示
API & 使用方法
您需要将状态数据封装成数据模型对象。注意您需要将初始状态或重置后的状态也封装成状态对象传递给该容器,才能保证该容器正常工作。
使用时,在 Podfile 中添加,示例如下
platform :ios, '10.0'
target '示例工程' do
pod 'StromanBackForward', '~> 1.2.1'
end
使用时直接加入
#import <StromanBackForward/StromanBackForward.h>
即可。
您最好让使用的类遵循BackForwardStackDelegate
协议。
- (void)currentStackStatusBackObjectsNumber:(NSInteger)backNumber forwardObjectsNumber:(NSInteger)forwardNumber;
:回调,用于回调现在可以回退多少个状态和恢复多少个状态。- (instancetype)initWithDelegate:(id<BackForwardStackDelegate>)delegate;
:初始化方法。只有一个,之所以要把delegate
放到初始化方法中,是因为如果不这样做,容器在初始化阶段是没有回调出来的。- (BackForwardStackModel *)backAction;
:用于撤销功能,它回退一个容器模型BackForwardStackModel
,该模型带有一个标志位canBack
用于判断弹出的状态对象是否可用。- (BackForwardStackModel *)forwardAction;
:用于恢复功能,它包含了同样类型的数据模型,其标志位canForward
用于判断弹出的状态对象是否可用。- (void)addStatusObject:(id)object;
:它用于添加状态对象。- (void)addCopiedStatusObject:(id)object;
:它用于添加状态对象,如果传入的对象需要深度复制的话,前提是该对象实现了深度复制。- (void)clearAllState;
:用于清空所有的状态。- (void)printCurrentStack;
:用于打印容器中的状态。isStackEmpty
:检查容器是否为空。- (void)clearAllStateExceptFirstOne;
:清空除了第一个状态对象以外的所有状态。
适用平台
- iOS平台,要求iOS 8.0及以上。
- 支持ARC,不支持MRC。