如何防止第二次单击UITableView

zon*_*gon 3 objective-c uitableview ios

我的应用程序在tableView:didSelectRowAtIndexPath中调用一个块,并在块中显示一个视图控制器.如果我在第一次单击正在进行时第二次单击该单元格,则会崩溃.如何防止第二次单击该单元格?

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath


    [dataController fetchAlbum:item
         success:^(Album *album) {
            ...
            ...

            [self presentViewController:photoViewController animated:YES completion:nil];


               }];
Run Code Online (Sandbox Code Playgroud)

Sto*_*nz2 9

在开始时didSelectRow,关闭桌面上的用户互动.

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    tableView.userInteractionEnabled = NO;
    ...
Run Code Online (Sandbox Code Playgroud)

您可能希望稍后在完成fetchAlbum(在主线程上执行此操作)时将其重新打开,以便在用户返回此视图(或提取失败)时,它们可以再次与表进行交互.


Ska*_*aal 6

对于快速 3 :

当用户选择一行时,关闭用户交互:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    tableView.isUserInteractionEnabled = false
Run Code Online (Sandbox Code Playgroud)

每当视图出现时,不要忘记将其打开:

override func viewDidAppear(_ animated: Bool) {
    tableView.isUserInteractionEnabled = true
}
Run Code Online (Sandbox Code Playgroud)