From 46f429a88143f42493026d82d97cb37716ed6584 Mon Sep 17 00:00:00 2001 From: harisk92 Date: Thu, 24 Feb 2022 10:20:56 +0100 Subject: [PATCH 1/2] Wait for tableView to lay children before setting initial scroll position --- Sources/FPNSearchCountryViewController.swift | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/Sources/FPNSearchCountryViewController.swift b/Sources/FPNSearchCountryViewController.swift index d9a7fc2a..b9ef2b4f 100644 --- a/Sources/FPNSearchCountryViewController.swift +++ b/Sources/FPNSearchCountryViewController.swift @@ -62,8 +62,22 @@ class FPNSearchCountryViewController: UITableViewController, UISearchResultsUpda private func updateInitialScrollPosition(){ tableView.setNeedsLayout() tableView.layoutIfNeeded() - if let countryCode = selectedCountryCode,let index = list?.firstIndex(where: {$0.code == countryCode}){ - tableView.scrollToRow(at: IndexPath(row: index, section: 0),at: .top, animated: false) + if let countryCode = selectedCountryCode, + let index = list?.firstIndex(where: {$0.code == countryCode}) { + + let indexPath = IndexPath(row: index, section: 0) + + guard indexPath.section < tableView.numberOfSections , indexPath.row < tableView.numberOfRows(inSection: indexPath.section) else { + return + } + + DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {[weak self] in + self?.tableView.scrollToRow( + at: indexPath, + at: .top, + animated: false + ) + } } From 5e31a8fd48060bd0e19cb56d39850d3ce5140be2 Mon Sep 17 00:00:00 2001 From: harisk92 Date: Thu, 24 Feb 2022 10:22:58 +0100 Subject: [PATCH 2/2] Fix formatting --- FlagPhoneNumber.xcodeproj/project.pbxproj | 2 +- Sources/FPNCountryCode.swift | 478 +++++++++++----------- 2 files changed, 240 insertions(+), 240 deletions(-) diff --git a/FlagPhoneNumber.xcodeproj/project.pbxproj b/FlagPhoneNumber.xcodeproj/project.pbxproj index 722e5642..a2695025 100644 --- a/FlagPhoneNumber.xcodeproj/project.pbxproj +++ b/FlagPhoneNumber.xcodeproj/project.pbxproj @@ -92,7 +92,7 @@ 0D192FFE2293078C002583B1 /* Bundle+Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Bundle+Extension.swift"; sourceTree = ""; }; 0D192FFF2293078C002583B1 /* FPNTextField.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FPNTextField.swift; sourceTree = ""; usesTabs = 1; }; 0D1930002293078C002583B1 /* FPNDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FPNDelegate.swift; sourceTree = ""; }; - 0D1930012293078C002583B1 /* FPNCountryCode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FPNCountryCode.swift; sourceTree = ""; }; + 0D1930012293078C002583B1 /* FPNCountryCode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FPNCountryCode.swift; sourceTree = ""; usesTabs = 1; }; 0D8C7134229296D40026E0C7 /* FlagPhoneNumber.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FlagPhoneNumber.h; sourceTree = ""; }; 0D8C7135229296D40026E0C7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 0DF48B1522916F9F006AB39C /* FPNSearchCountryViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FPNSearchCountryViewController.swift; sourceTree = ""; usesTabs = 0; wrapsLines = 1; }; diff --git a/Sources/FPNCountryCode.swift b/Sources/FPNCountryCode.swift index 015a2c63..aca82af2 100644 --- a/Sources/FPNCountryCode.swift +++ b/Sources/FPNCountryCode.swift @@ -8,243 +8,243 @@ import Foundation public enum FPNCountryCode: String { - case AF = "AF" - case ZA = "ZA" - case AL = "AL" - case DZ = "DZ" - case DE = "DE" - case AD = "AD" - case AO = "AO" - case AI = "AI" - case AG = "AG" - case SA = "SA" - case AR = "AR" - case AM = "AM" - case AW = "AW" - case AU = "AU" - case AT = "AT" - case AZ = "AZ" - case BS = "BS" - case BH = "BH" - case BD = "BD" - case BB = "BB" - case BE = "BE" - case BZ = "BZ" - case BM = "BM" - case BT = "BT" - case BY = "BY" - case BO = "BO" - case BA = "BA" - case BW = "BW" - case BN = "BN" - case BR = "BR" - case BG = "BG" - case BF = "BF" - case BI = "BI" - case BJ = "BJ" - case KH = "KH" - case CM = "CM" - case CA = "CA" - case CV = "CV" - case CL = "CL" - case CN = "CN" - case CY = "CY" - case CO = "CO" - case KM = "KM" - case CG = "CG" - case CD = "CD" - case KP = "KP" - case KR = "KR" - case CR = "CR" - case HR = "HR" - case CU = "CU" - case CI = "CI" - case DK = "DK" - case DJ = "DJ" - case DM = "DM" - case ES = "ES" - case EE = "EE" - case FJ = "FJ" - case FI = "FI" - case FR = "FR" - case GA = "GA" - case GM = "GM" - case GH = "GH" - case GI = "GI" - case GD = "GD" - case GL = "GL" - case GR = "GR" - case GP = "GP" - case GU = "GU" - case GT = "GT" - case GG = "GG" - case GN = "GN" - case GQ = "GQ" - case GW = "GW" - case GY = "GY" - case GF = "GF" - case GE = "GE" - case HT = "HT" - case HN = "HN" - case HK = "HK" - case HU = "HU" - case IN = "IN" - case ID = "ID" - case IQ = "IQ" - case IR = "IR" - case IE = "IE" - case IS = "IS" - case IL = "IL" - case IT = "IT" - case JM = "JM" - case JP = "JP" - case JE = "JE" - case JO = "JO" - case KZ = "KZ" - case KE = "KE" - case KG = "KG" - case KI = "KI" - case KW = "KW" - case RE = "RE" - case LA = "LA" - case LS = "LS" - case LV = "LV" - case LB = "LB" - case LY = "LY" - case LR = "LR" - case LI = "LI" - case LT = "LT" - case LU = "LU" - case MO = "MO" - case MK = "MK" - case MG = "MG" - case MY = "MY" - case MW = "MW" - case MV = "MV" - case ML = "ML" - case MT = "MT" - case MA = "MA" - case MQ = "MQ" - case MU = "MU" - case MR = "MR" - case YT = "YT" - case MX = "MX" - case MD = "MD" - case MC = "MC" - case MN = "MN" - case MS = "MS" - case ME = "ME" - case MZ = "MZ" - case MM = "MM" - case NA = "NA" - case NR = "NR" - case NI = "NI" - case NE = "NE" - case NG = "NG" - case NU = "NU" - case NO = "NO" - case NC = "NC" - case NZ = "NZ" - case NP = "NP" - case OM = "OM" - case UG = "UG" - case UZ = "UZ" - case PK = "PK" - case PW = "PW" - case PA = "PA" - case PG = "PG" - case PY = "PY" - case NL = "NL" - case PH = "PH" - case PL = "PL" - case PF = "PF" - case PR = "PR" - case PT = "PT" - case PE = "PE" - case QA = "QA" - case RO = "RO" - case GB = "GB" - case RU = "RU" - case RW = "RW" - case CF = "CF" - case DO = "DO" - case BL = "BL" - case KN = "KN" - case SM = "SM" - case MF = "MF" - case PM = "PM" - case VC = "VC" - case SH = "SH" - case LC = "LC" - case SV = "SV" - case WS = "WS" - case AS = "AS" - case ST = "ST" - case RS = "RS" - case SC = "SC" - case SL = "SL" - case SG = "SG" - case SK = "SK" - case SI = "SI" - case SO = "SO" - case SD = "SD" - case SS = "SS" - case LK = "LK" - case CH = "CH" - case SR = "SR" - case SE = "SE" - case SJ = "SJ" - case SZ = "SZ" - case SY = "SY" - case SN = "SN" - case TJ = "TJ" - case TZ = "TZ" - case TW = "TW" - case TD = "TD" - case CZ = "CZ" - case IO = "IO" - case PS = "PS" - case TH = "TH" - case TL = "TL" - case TG = "TG" - case TK = "TK" - case TO = "TO" - case TT = "TT" - case TN = "TN" - case TM = "TM" - case TR = "TR" - case TV = "TV" - case UA = "UA" - case UY = "UY" - case VU = "VU" - case VE = "VE" - case VN = "VN" - case WF = "WF" - case XK = "XK" - case YE = "YE" - case ZM = "ZM" - case ZW = "ZW" - case EG = "EG" - case AE = "AE" - case EC = "EC" - case ER = "ER" - case VA = "VA" - case FM = "FM" - case US = "US" - case ET = "ET" - case CX = "CX" - case NF = "NF" - case IM = "IM" - case KY = "KY" - case CC = "CC" - case CK = "CK" - case FO = "FO" - case FK = "FK" - case MP = "MP" - case MH = "MH" - case SB = "SB" - case TC = "TC" - case VG = "VG" - case VI = "VI" - case AX = "AX" + case AF = "AF" + case ZA = "ZA" + case AL = "AL" + case DZ = "DZ" + case DE = "DE" + case AD = "AD" + case AO = "AO" + case AI = "AI" + case AG = "AG" + case SA = "SA" + case AR = "AR" + case AM = "AM" + case AW = "AW" + case AU = "AU" + case AT = "AT" + case AZ = "AZ" + case BS = "BS" + case BH = "BH" + case BD = "BD" + case BB = "BB" + case BE = "BE" + case BZ = "BZ" + case BM = "BM" + case BT = "BT" + case BY = "BY" + case BO = "BO" + case BA = "BA" + case BW = "BW" + case BN = "BN" + case BR = "BR" + case BG = "BG" + case BF = "BF" + case BI = "BI" + case BJ = "BJ" + case KH = "KH" + case CM = "CM" + case CA = "CA" + case CV = "CV" + case CL = "CL" + case CN = "CN" + case CY = "CY" + case CO = "CO" + case KM = "KM" + case CG = "CG" + case CD = "CD" + case KP = "KP" + case KR = "KR" + case CR = "CR" + case HR = "HR" + case CU = "CU" + case CI = "CI" + case DK = "DK" + case DJ = "DJ" + case DM = "DM" + case ES = "ES" + case EE = "EE" + case FJ = "FJ" + case FI = "FI" + case FR = "FR" + case GA = "GA" + case GM = "GM" + case GH = "GH" + case GI = "GI" + case GD = "GD" + case GL = "GL" + case GR = "GR" + case GP = "GP" + case GU = "GU" + case GT = "GT" + case GG = "GG" + case GN = "GN" + case GQ = "GQ" + case GW = "GW" + case GY = "GY" + case GF = "GF" + case GE = "GE" + case HT = "HT" + case HN = "HN" + case HK = "HK" + case HU = "HU" + case IN = "IN" + case ID = "ID" + case IQ = "IQ" + case IR = "IR" + case IE = "IE" + case IS = "IS" + case IL = "IL" + case IT = "IT" + case JM = "JM" + case JP = "JP" + case JE = "JE" + case JO = "JO" + case KZ = "KZ" + case KE = "KE" + case KG = "KG" + case KI = "KI" + case KW = "KW" + case RE = "RE" + case LA = "LA" + case LS = "LS" + case LV = "LV" + case LB = "LB" + case LY = "LY" + case LR = "LR" + case LI = "LI" + case LT = "LT" + case LU = "LU" + case MO = "MO" + case MK = "MK" + case MG = "MG" + case MY = "MY" + case MW = "MW" + case MV = "MV" + case ML = "ML" + case MT = "MT" + case MA = "MA" + case MQ = "MQ" + case MU = "MU" + case MR = "MR" + case YT = "YT" + case MX = "MX" + case MD = "MD" + case MC = "MC" + case MN = "MN" + case MS = "MS" + case ME = "ME" + case MZ = "MZ" + case MM = "MM" + case NA = "NA" + case NR = "NR" + case NI = "NI" + case NE = "NE" + case NG = "NG" + case NU = "NU" + case NO = "NO" + case NC = "NC" + case NZ = "NZ" + case NP = "NP" + case OM = "OM" + case UG = "UG" + case UZ = "UZ" + case PK = "PK" + case PW = "PW" + case PA = "PA" + case PG = "PG" + case PY = "PY" + case NL = "NL" + case PH = "PH" + case PL = "PL" + case PF = "PF" + case PR = "PR" + case PT = "PT" + case PE = "PE" + case QA = "QA" + case RO = "RO" + case GB = "GB" + case RU = "RU" + case RW = "RW" + case CF = "CF" + case DO = "DO" + case BL = "BL" + case KN = "KN" + case SM = "SM" + case MF = "MF" + case PM = "PM" + case VC = "VC" + case SH = "SH" + case LC = "LC" + case SV = "SV" + case WS = "WS" + case AS = "AS" + case ST = "ST" + case RS = "RS" + case SC = "SC" + case SL = "SL" + case SG = "SG" + case SK = "SK" + case SI = "SI" + case SO = "SO" + case SD = "SD" + case SS = "SS" + case LK = "LK" + case CH = "CH" + case SR = "SR" + case SE = "SE" + case SJ = "SJ" + case SZ = "SZ" + case SY = "SY" + case SN = "SN" + case TJ = "TJ" + case TZ = "TZ" + case TW = "TW" + case TD = "TD" + case CZ = "CZ" + case IO = "IO" + case PS = "PS" + case TH = "TH" + case TL = "TL" + case TG = "TG" + case TK = "TK" + case TO = "TO" + case TT = "TT" + case TN = "TN" + case TM = "TM" + case TR = "TR" + case TV = "TV" + case UA = "UA" + case UY = "UY" + case VU = "VU" + case VE = "VE" + case VN = "VN" + case WF = "WF" + case XK = "XK" + case YE = "YE" + case ZM = "ZM" + case ZW = "ZW" + case EG = "EG" + case AE = "AE" + case EC = "EC" + case ER = "ER" + case VA = "VA" + case FM = "FM" + case US = "US" + case ET = "ET" + case CX = "CX" + case NF = "NF" + case IM = "IM" + case KY = "KY" + case CC = "CC" + case CK = "CK" + case FO = "FO" + case FK = "FK" + case MP = "MP" + case MH = "MH" + case SB = "SB" + case TC = "TC" + case VG = "VG" + case VI = "VI" + case AX = "AX" }