3D Touch Peek and Pop на UITableViewCell Objective C Code. (Force Touch)

Мне нужно включить Peek And Pop функциональность на UITableViewCell в цели C с помощью Force Touch. А также нужно показать некоторые действия в режиме просмотра, как почтовое приложение по умолчанию. Я новичок в iOS и, пожалуйста, помогите мне туда добраться.

1 ответ

Решение

Эффект Peek and Pop для ячейки TableViewCell и представления коллекции с действиями

1) Вы должны обратиться к своему классу viewController вызывающей стороны как UIViewControllerPreviewing Delegate

@interface MyTableViewController ()

2) Создайте @property для хранения информации.

@property (nonatomic, strong) id previewingContext;

3) Вызовите метод forceTouchIntialize в ViewDidLoad

- (void)viewDidLoad {
    [super viewDidLoad];
    [self forceTochIntialize];
}

4) Проверьте Force Touch Доступно или Нет

-(void)forceTouchIntialize{
    if ([self isForceTouchAvailable]) {
        self.previewingContext = [self registerForPreviewingWithDelegate:self sourceView:self.view];
    }
}

- (BOOL)isForceTouchAvailable {
    BOOL isForceTouchAvailable = NO;
    if ([self.traitCollection respondsToSelector:@selector(forceTouchCapability)]) {
        isForceTouchAvailable = self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable;
    }
    return isForceTouchAvailable;
}

5) Укажите в контроллере представления, какой контент мы хотим просмотреть (FOR PEEK)

- (UIViewController *)previewingContext:(id<UIViewControllerPreviewing> )previewingContext viewControllerForLocation:(CGPoint)location{

    CGPoint cellPostion = [yourTableView convertPoint:location fromView:self.view];

    NSIndexPath *path = yourTableView indexPathForRowAtPoint:cellPostion];

    if (path) {

        UITableViewCell *tableCell = [yourTableView 

cellForRowAtIndexPath:path];

//Pushing to a nib File

        PushViewController *previewController = [[PushViewController alloc] initWithNibName:@"PushViewController" bundle:nil];

//To Pass data to Preview ViewController

 //       id temp = [yourDataArray objectAtIndex:path.row];

//        PushViewController.anyObject=temp;     

   previewingContext.sourceRect = [self.view convertRect:tableCell.frame fromView: yourTableView

 ];        return previewController;

    }

    return nil;

}

6) POP в глубокой печати (FOR POP)

-(void)previewingContext:(id )previewingContext commitViewController: (UIViewController *)viewControllerToCommit {
    [self.navigationController showViewController:viewControllerToCommit sender:nil];
}

7) Когда контроллер заглядывает и вы проводите пальцем вверх, если вы хотите добавить такие кнопки, как удалить, архивируйте добавьте этот метод в ваш previewViewContrller(в этом примере "PushViewController")

- (NSArray<id> *)previewActionItems {
    UIPreviewAction *previewAction1 = [UIPreviewAction actionWithTitle:@"delete" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction *action,  UIViewController *previewViewController){

    }];

    UIPreviewAction *previewAction2 = [UIPreviewAction actionWithTitle:@"archive" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction *action, UIViewController *previewViewController){

    }];
    return @[previewAction1,previewAction2];
}
Другие вопросы по тегам