Archive for 10月 6th, 2017

tableViewのcanEditRowAtIndexPathのナゾ

金曜日, 10月 6th, 2017

iPhoneX対応作業中に XCode9でつまづいた。tableViewのcanEditRowAtIndexPathをいじっているとこけるようになった。

こけるコード、

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *object = _objects[indexPath.row];
    switch(DirSelMode)
    {
        case 0:
            if([object isEqualToString:@"Inbox"]||[object isEqualToString:@".DS_Store"]||[object isEqualToString:@".DS_Store_"]||[object isEqualToString:@"..DS_Store"]||[object isEqualToString:@".|.//OneDrive"]||[object isEqualToString:@".|.//DropBox"])
            {
                return NO;
            }
            else
            {
                return YES;
            }
            return YES;
            break;
        case 1:
            return NO;
            break;
        case 2:
            return NO;
            break;
    }
    return NO;
}

これで走ると

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    switch(DirSelMode)
    {
        case 0:
        {
            NSString *object = _objects[indexPath.row];
            if([object isEqualToString:@"Inbox"]||[object isEqualToString:@".DS_Store"]||[object isEqualToString:@".DS_Store_"]||[object isEqualToString:@"..DS_Store"]||[object isEqualToString:@".|.//OneDrive"]||[object isEqualToString:@".|.//DropBox"])
            {
                return NO;
            }
            else
            {
                return YES;
            }
        }
            return YES;
            break;
        case 1:
            return NO;
            break;
        case 2:
            return NO;
            break;
    }
    return NO;
}

どっちも一緒かと思いますが、うまくいくコードの方が最適化されていますわな。使わないコードは、やはりしまっておくと。