123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495 |
- //
- // CPDFPageEditViewController.m
- // compdfkit-tools
- //
- // THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
- // AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
- // UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
- // This notice may not be removed from this file.
- //
- #import "CPDFPageEditViewController.h"
- #import "UIViewController+LeftItem.h"
- #import "CPDFColorUtils.h"
- #import "CPDFPageEditViewCell.h"
- #import "CPageEditToolBar.h"
- #import "CBlankPageModel.h"
- #import <ComPDFKit/ComPDFKit.h>
- @interface CPDFPageEditViewController () <CPageEditToolBarDelegate>
- @property (nonatomic, strong) UICollectionView *collectionView;
- @property (nonatomic, strong) UILabel *titleLabel;
- @property (nonatomic, strong) UIButton *backBtn;
- @property (nonatomic, strong) UIButton *doneBtn;
- @property (nonatomic, strong) UIButton *selectAllBtn;
- @property (nonatomic, strong) UIButton *editBtn;
- @property (nonatomic, strong) CPageEditToolBar *pageEditToolBar;
- @property (nonatomic, assign) BOOL isSelecAll;
- @property (nonatomic, assign) BOOL isEdit;
- @property (nonatomic, strong) UIView *headerView;
- @property (nonatomic, assign) BOOL isPageEdit;
- @end
- @implementation CPDFPageEditViewController
- #pragma mark - UIViewController Methods
- - (void)viewDidLoad {
- [super viewDidLoad];
- // Do any additional setup after loading the view.
- self.headerView = [[UIView alloc] init];
- self.headerView.layer.borderColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.1].CGColor;
- self.headerView.layer.borderWidth = 1.0;
- self.headerView.backgroundColor = [CPDFColorUtils CAnnotationPropertyViewControllerBackgoundColor];
- [self.view addSubview:self.headerView];
-
- self.titleLabel.text = NSLocalizedString(@"Page Edit", nil);
- self.titleLabel.textAlignment = NSTextAlignmentCenter;
- [self.backBtn setImage:[UIImage imageNamed:@"CPDFPageEitImageBack" inBundle:[NSBundle bundleForClass:self.class] compatibleWithTraitCollection:nil] forState:UIControlStateNormal];
-
- [self.headerView addSubview:self.titleLabel];
- [self.headerView addSubview:self.backBtn];
-
- self.editBtn = [[UIButton alloc] init];
- self.editBtn.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
- [self.editBtn setImage:[UIImage imageNamed:@"CPDFPageEitImageEdit" inBundle:[NSBundle bundleForClass:self.class] compatibleWithTraitCollection:nil] forState:UIControlStateNormal];
- [self.editBtn addTarget:self action:@selector(buttonItemClicked_edit:) forControlEvents:UIControlEventTouchUpInside];
- [self.headerView addSubview:self.editBtn];
-
- self.isEdit = NO;
-
- [self.collectionView registerClass:[CPDFPageEditViewCell class] forCellWithReuseIdentifier:@"pageEditCell"];
- self.collectionView.userInteractionEnabled = YES;
- self.collectionView.backgroundColor = [CPDFColorUtils CAnnotationSampleBackgoundColor];
-
- self.doneBtn = [UIButton buttonWithType:UIButtonTypeCustom];
- [self.doneBtn setTitle:NSLocalizedString(@"Done", nil) forState:UIControlStateNormal];
- [self.doneBtn addTarget:self action:@selector(buttonItemClicked_done:) forControlEvents:UIControlEventTouchUpInside];
- [self.doneBtn setTitleColor:[UIColor colorWithRed:20.0/255.0 green:96.0/255.0 blue:243.0/255.0 alpha:1.0] forState:UIControlStateNormal];
- [self.headerView addSubview:self.doneBtn];
-
- self.selectAllBtn = [UIButton buttonWithType:UIButtonTypeCustom];
- [self.selectAllBtn setImage:[UIImage imageNamed:@"CPDFPageEitImageSelectAll" inBundle:[NSBundle bundleForClass:self.class] compatibleWithTraitCollection:nil] forState:UIControlStateNormal];
- [self.selectAllBtn addTarget:self action:@selector(buttonItemClicked_selectAll:) forControlEvents:UIControlEventTouchUpInside];
- [self.headerView addSubview:self.selectAllBtn];
-
- UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressGestureRecognized:)];
- [self.collectionView addGestureRecognizer:longPress];
-
- self.view.backgroundColor = [CPDFColorUtils CAnnotationSampleBackgoundColor];
- self.pageEditToolBar.hidden = YES;
- self.doneBtn.hidden = YES;
- self.selectAllBtn.hidden = YES;
- self.isPageEdit = NO;
- }
- - (void)viewWillLayoutSubviews {
-
- if (@available(iOS 11.0, *)) {
- self.headerView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.safeAreaInsets.top + 50);
- self.titleLabel.frame = CGRectMake((self.view.frame.size.width - 120)/2, self.view.safeAreaInsets.top, 120, 50);
- self.collectionView.frame = CGRectMake(self.view.safeAreaInsets.left, self.view.safeAreaInsets.top + 60, self.view.frame.size.width - self.view.safeAreaInsets.left - self.view.safeAreaInsets.right, self.view.frame.size.height - 110 - self.view.safeAreaInsets.top);
- self.backBtn.frame = CGRectMake(self.view.safeAreaInsets.left, self.view.safeAreaInsets.top, 50, 50);
- self.editBtn.frame = CGRectMake(self.view.frame.size.width - self.view.safeAreaInsets.right - 70, self.view.safeAreaInsets.top, 50, 50);
- self.doneBtn.frame = CGRectMake(self.view.frame.size.width - self.view.safeAreaInsets.right - 70, self.view.safeAreaInsets.top, 50, 50);
- self.selectAllBtn.frame = CGRectMake(self.view.frame.size.width - self.view.safeAreaInsets.right - 130, self.view.safeAreaInsets.top, 50, 50);
- } else {
- self.headerView.frame = CGRectMake(0, 0, self.view.frame.size.width, 120);
- self.titleLabel.frame = CGRectMake((self.view.frame.size.width - 120)/2, 65, 120, 50);
- self.collectionView.frame = CGRectMake(0, 50, self.view.frame.size.width, self.view.frame.size.height - 110);
- self.backBtn.frame = CGRectMake(self.view.frame.size.width - 60, 65, 50, 50);
- self.editBtn.frame = CGRectMake(self.view.frame.size.width - 70, 65, 50, 50);
- self.doneBtn.frame = CGRectMake(self.view.frame.size.width - 70, 65, 50, 50);
- self.selectAllBtn.frame = CGRectMake(self.view.frame.size.width - 120, 65, 50, 50);
- }
- }
- #pragma mark - Action
- - (void)buttonItemClicked_edit:(UIButton *)button {
- self.isEdit = YES;
- self.editBtn.hidden = YES;
- self.isSelecAll = NO;
-
- CGFloat height = 44.0;
- if (@available(iOS 11.0, *))
- height += self.view.safeAreaInsets.bottom;
-
- self.pageEditToolBar = [[CPageEditToolBar alloc] initWithFrame:CGRectMake(0, self.view.frame.size.height - height, self.view.frame.size.width, height)];
- self.pageEditToolBar.pdfView = self.pdfView;
- self.pageEditToolBar.currentPageIndex = -1;
- self.pageEditToolBar.delegate = self;
- self.pageEditToolBar.currentPageIndex = 1;
- [self.view addSubview:self.pageEditToolBar];
-
- self.pageEditToolBar.hidden = NO;
- self.doneBtn.hidden = NO;
- self.selectAllBtn.hidden = NO;
-
- if (self.isEdit) {
- self.collectionView.allowsMultipleSelection = YES;
- } else {
- self.collectionView.allowsMultipleSelection = NO;
- }
-
- [self.collectionView reloadData];
- NSIndexPath *indexPath = [NSIndexPath indexPathForItem:self.pdfView.currentPageIndex inSection:0];
- [self.collectionView selectItemAtIndexPath:indexPath
- animated:NO
- scrollPosition:UICollectionViewScrollPositionCenteredVertically];
- [self updateTitle];
- }
- - (void)buttonItemClicked_done:(UIButton *)button {
- self.isEdit = NO;
- self.editBtn.hidden = NO;
-
- self.pageEditToolBar.hidden = YES;
- self.doneBtn.hidden = YES;
- self.selectAllBtn.hidden = YES;
-
- [self.collectionView reloadData];
-
- [self updateTitle];
- }
- - (void)buttonItemClicked_back:(UIButton *)button {
- [self dismissViewControllerAnimated:YES completion:^{
- if (self.isPageEdit) {
- [self.pdfView.document writeToURL:self.pdfView.document.documentURL];
- if (self.pageEditDelegate && [self.pageEditDelegate respondsToSelector:@selector(pageEditViewControllerDone:)]) {
- [self.pageEditDelegate pageEditViewControllerDone:self];
- }
- }
- }];
- }
- - (void)buttonItemClicked_selectAll:(UIButton *)button {
- self.isSelecAll = !self.isSelecAll;
- if (self.isSelecAll) {
- [self.selectAllBtn setImage:[UIImage imageNamed:@"CPDFPageEitImageSelectNoAll" inBundle:[NSBundle bundleForClass:self.class] compatibleWithTraitCollection:nil] forState:UIControlStateNormal];
- } else {
- [self.selectAllBtn setImage:[UIImage imageNamed:@"CPDFPageEitImageSelectAll" inBundle:[NSBundle bundleForClass:self.class] compatibleWithTraitCollection:nil] forState:UIControlStateNormal];
- }
-
- if (self.isSelecAll) {
- for (NSInteger section = 0; section < self.collectionView.numberOfSections; section++) {
- for (NSInteger item = 0; item < [self.collectionView numberOfItemsInSection:section]; item++) {
- NSIndexPath *indexPath = [NSIndexPath indexPathForItem:item inSection:section];
- [self.collectionView selectItemAtIndexPath:indexPath animated:NO scrollPosition:UICollectionViewScrollPositionNone];
- }
- }
- } else {
- for (NSInteger section = 0; section < self.collectionView.numberOfSections; section++) {
- for (NSInteger item = 0; item < [self.collectionView numberOfItemsInSection:section]; item++) {
- NSIndexPath *indexPath = [NSIndexPath indexPathForItem:item inSection:section];
- [self.collectionView deselectItemAtIndexPath:indexPath animated:YES];
- }
- }
- }
- [self updateTitle];
- }
- #pragma mark - Private Methods
- - (void)updateTitle {
- if (self.isEdit) {
- NSInteger count = [self.collectionView indexPathsForSelectedItems].count;
- self.titleLabel.text = [NSString stringWithFormat:@"%@ %ld",NSLocalizedString(@"Selected:", nil), (long)count];
- self.pageEditToolBar.isSelect = [self getIsSelect];
- } else {
- self.titleLabel.text = NSLocalizedString(@"Page Edit", nil);
- }
- }
- - (NSInteger)getMinSelectIndex {
- NSInteger min = self.pdfView.document.pageCount;
-
- for (NSIndexPath *indexPath in [self.collectionView indexPathsForSelectedItems]) {
- if (indexPath.item < min) {
- min = indexPath.item;
- }
- }
- return min;
- }
- - (NSInteger)getMaxSelectIndex {
- NSInteger max = -1;
-
- for (NSIndexPath *indexPath in [self.collectionView indexPathsForSelectedItems]) {
- if (indexPath.item > max) {
- max = indexPath.item;
- }
- }
- return max+1;
- }
- - (BOOL)getIsSelect {
- if ([self.collectionView indexPathsForSelectedItems].count > 0) {
- return YES;
- } else {
- return NO;
- }
- }
- #pragma mark - GestureRecognized
- - (void)longPressGestureRecognized:(UILongPressGestureRecognizer *)gestureRecognizer {
- switch (gestureRecognizer.state) {
- case UIGestureRecognizerStateBegan:
- {
- NSIndexPath *indexPath = [self.collectionView indexPathForItemAtPoint:[gestureRecognizer locationInView:self.collectionView]];
- if (indexPath == nil) {
- break;
- }
- [self.collectionView beginInteractiveMovementForItemAtIndexPath:indexPath];
- [UIView animateWithDuration:0.2 animations:^{
- [self.collectionView updateInteractiveMovementTargetPosition:[gestureRecognizer locationInView:self.collectionView]];
- }];
- }
- break;
- case UIGestureRecognizerStateChanged:
- {
- [self.collectionView updateInteractiveMovementTargetPosition:[gestureRecognizer locationInView:self.collectionView]];
- }
- break;
- case UIGestureRecognizerStateEnded:
- {
- [self.collectionView endInteractiveMovement];
- }
- break;
- default:
- {
- [self.collectionView cancelInteractiveMovement];
- }
- break;
- }
- }
- #pragma mark - UICollectionViewDataSource
- - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
- return self.pdfView.document.pageCount;
- }
- - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
- CPDFPageEditViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"pageEditCell" forIndexPath:indexPath];
- CPDFPage *page = [self.pdfView.document pageAtIndex:indexPath.item];
- CGSize pageSize = [self.pdfView.document pageSizeAtIndex:indexPath.item];
- CGFloat multiple = MAX(pageSize.width / 110, pageSize.height / 173);
-
- cell.imageSize = CGSizeMake(pageSize.width / multiple, pageSize.height / multiple);
- [cell setNeedsLayout];
- cell.imageView.image = [page thumbnailOfSize:CGSizeMake(pageSize.width / multiple, pageSize.height / multiple)];
- cell.textLabel.text = [NSString stringWithFormat:@"%@",@(indexPath.item+1)];
- [cell setEdit:self.isEdit];
- return cell;
- }
- - (BOOL)collectionView:(UICollectionView *)collectionView canMoveItemAtIndexPath:(NSIndexPath *)indexPath {
- return YES;
- }
- - (void)collectionView:(UICollectionView *)collectionView moveItemAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath*)destinationIndexPath {
- if (sourceIndexPath.item != destinationIndexPath.item) {
- [self.pdfView.document movePageAtIndex:sourceIndexPath.item withPageAtIndex:destinationIndexPath.item];
- self.isPageEdit = YES;
- }
- }
- #pragma mark - UICollectionViewDelegate
- - (BOOL)collectionView:(UICollectionView *)collectionView shouldSelectItemAtIndexPath:(NSIndexPath *)indexPath {
- return YES;
- }
- - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
- if (self.isEdit) {
- UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];
- self.pageEditToolBar.currentPageIndex = indexPath.item;
- self.pageEditToolBar.isSelect = [self getIsSelect];
- [self updateTitle];
- [cell setSelected:YES];
- } else {
- if([self.pageEditDelegate respondsToSelector:@selector(pageEditViewController:pageIndex:)]) {
- [self.pageEditDelegate pageEditViewController:self pageIndex:indexPath.item];
- }
-
- [self dismissViewControllerAnimated:YES completion:^{
-
- }];
- }
- }
- - (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath {
- UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];
- [self updateTitle];
- [cell setSelected:NO];
- }
- #pragma mark - CPageEditToolBarDelegate
- - (void)pageEditToolBarBlankPageInsert:(CPageEditToolBar *)pageEditToolBar pageModel:(CBlankPageModel *)pageModel {
- CGSize size = pageModel.size;
-
- if (pageModel.rotation == 1) {
- size = CGSizeMake(pageModel.size.height, pageModel.size.width);
- }
-
- NSInteger pageIndex = pageModel.pageIndex;
- if (pageModel.pageIndex == -2) {
- pageIndex = self.pdfView.document.pageCount;
- }
-
- [self.pdfView.document insertPage:size atIndex:pageIndex];
- [self.collectionView reloadData];
- [self.pageEditToolBar reloadData];
-
- [self updateTitle];
- self.isPageEdit = YES;
- NSIndexPath *indexPath = [NSIndexPath indexPathForItem:pageIndex inSection:0];
- [self.collectionView selectItemAtIndexPath:indexPath
- animated:NO
- scrollPosition:UICollectionViewScrollPositionCenteredVertically];
- }
- - (void)pageEditToolBarPDFInsert:(CPageEditToolBar *)pageEditToolBar pageModel:(CBlankPageModel *)pageModel document:(nonnull CPDFDocument *)document {
- [self.pdfView.document importPages:pageModel.indexSet fromDocument:document atIndex:pageModel.pageIndex];
- [self.collectionView reloadData];
-
- [pageModel.indexSet enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL * _Nonnull stop) {
- NSIndexPath *indexPath = [NSIndexPath indexPathForItem:idx+1 inSection:0];
- [self.collectionView selectItemAtIndexPath:indexPath
- animated:NO
- scrollPosition:UICollectionViewScrollPositionCenteredVertically];
- }];
- }
- - (void)pageEditToolBarExtract:(CPageEditToolBar *)pageEditToolBar {
- NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
- NSString *fileName = self.pdfView.document.documentURL.lastPathComponent.stringByDeletingPathExtension;
- NSString *filePath = [NSString stringWithFormat:@"%@/%@_Pages.pdf",path,fileName];
- NSMutableIndexSet *indexSet = [NSMutableIndexSet indexSet];
- for (NSIndexPath *indexPath in [self.collectionView indexPathsForSelectedItems]) {
- [indexSet addIndex:indexPath.item];
- }
-
- CPDFDocument *document = [[CPDFDocument alloc] init];
- [document importPages:indexSet fromDocument:self.pdfView.document atIndex:0];
- [document writeToURL:[NSURL fileURLWithPath:filePath]];
-
- NSString *message = [NSString stringWithFormat:NSLocalizedString(@"This file has been saved in:'Documents/'", nil)];
- UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"OK", nil)
- style:UIAlertActionStyleCancel
- handler:nil];
- UIAlertController *alert = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Successfully!", nil)
- message:message
- preferredStyle:UIAlertControllerStyleAlert];
- [alert addAction:cancelAction];
- [self presentViewController:alert animated:YES completion:nil];
- [self.pageEditToolBar reloadData];
-
- self.isPageEdit = YES;
- [self updateTitle];
- }
- - (void)pageEditToolBarRotate:(CPageEditToolBar *)pageEditToolBar {
- NSMutableIndexSet *indexSet = [NSMutableIndexSet indexSet];
- for (NSIndexPath *indexPath in [self.collectionView indexPathsForSelectedItems]) {
- CPDFPageEditViewCell *cell = (CPDFPageEditViewCell *)[self.collectionView cellForItemAtIndexPath:indexPath];
- cell.imageView.transform = CGAffineTransformRotate(cell.imageView.transform, M_PI/2);
- [indexSet addIndex:indexPath.item];
-
- CPDFPage *pPage = [self.pdfView.document pageAtIndex:indexPath.item];
- pPage.rotation += 90;
-
- CGSize pageSize = [self.pdfView.document pageSizeAtIndex:indexPath.item];
- CGFloat multiple = MAX(pageSize.width / 110, pageSize.height / 173);
-
- cell.imageSize = CGSizeMake(pageSize.width / multiple, pageSize.height / multiple);
- [cell setNeedsLayout];
- }
-
- [self updateTitle];
- self.isPageEdit = YES;
- }
- - (void)pageEditToolBarDelete:(CPageEditToolBar *)pageEditToolBar {
- NSInteger selectedCount = [self.collectionView indexPathsForSelectedItems].count;
- NSInteger totalCount = [self.collectionView numberOfItemsInSection:0];
- if (selectedCount == totalCount) {
- UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"OK", nil)
- style:UIAlertActionStyleCancel
- handler:nil];
- UIAlertController *alert = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Warning", nil)
- message:NSLocalizedString(@"Can not delete all pages.", nil)
- preferredStyle:UIAlertControllerStyleAlert];
- [alert addAction:cancelAction];
- [self presentViewController:alert animated:YES completion:nil];
- return;
- }
-
- NSMutableIndexSet *indexSet = [NSMutableIndexSet indexSet];
- for (NSIndexPath *indexPath in [self.collectionView indexPathsForSelectedItems]) {
- [indexSet addIndex:indexPath.item];
- }
- [self.collectionView deleteItemsAtIndexPaths:[self.collectionView indexPathsForSelectedItems]];
- [self.pdfView.document removePageAtIndexSet:indexSet];
- [self.pageEditToolBar reloadData];
-
- [self updateTitle];
- self.isPageEdit = YES;
- }
- - (void)pageEditToolBarReplace:(CPageEditToolBar *)pageEditToolBar document:(CPDFDocument *)document {
- NSInteger min = [self getMinSelectIndex];
- NSMutableIndexSet *indexSet = [NSMutableIndexSet indexSet];
- for (int i = 0; i < document.pageCount; i++) {
- [indexSet addIndex:i];
- }
-
- NSMutableIndexSet *deleteIndexSet = [NSMutableIndexSet indexSet];
- for (NSIndexPath *indexPath in [self.collectionView indexPathsForSelectedItems]) {
- [deleteIndexSet addIndex:indexPath.item];
- }
- [self.collectionView deleteItemsAtIndexPaths:[self.collectionView indexPathsForSelectedItems]];
- [self.pdfView.document removePageAtIndexSet:deleteIndexSet];
-
- [self.pdfView.document importPages:indexSet fromDocument:document atIndex:min];
- [self.collectionView reloadData];
- [self.pageEditToolBar reloadData];
-
- [self updateTitle];
- self.isPageEdit = YES;
- }
- - (void)pageEditToolBarCopy:(CPageEditToolBar *)pageEditToolBar {
- NSInteger max = [self getMaxSelectIndex];
- NSMutableIndexSet *indexSet = [NSMutableIndexSet indexSet];
- for (NSIndexPath *indexPath in [self.collectionView indexPathsForSelectedItems]) {
- [indexSet addIndex:indexPath.item];
- }
-
- [self.pdfView.document importPages:indexSet fromDocument:self.pdfView.document atIndex:max];
- [self.collectionView reloadData];
- [self.pageEditToolBar reloadData];
-
- [self updateTitle];
- self.isPageEdit = YES;
- }
- @end
|