СollectionViewCell
это View
, а TableViewController
это ViewController
, как бы совсем разные вещи. Имейте чёткое представление об этом. Правильный вопрос: Могу ли я в СollectionViewCell
добавить TableView
или вообще говоря любой View
? (Вы это спрашивали?)case deviceOwnerAuthenticationWithBiometrics
Indicates that the device owner must authenticate using biometry. // Юзаем только биометрию
case deviceOwnerAuthentication
Indicates that the device owner can authenticate using biometry or the device password. //Юзаем биометрия и если её нет, то Пароль
Подробности по каждому из методов можно найти там же. Подробности 2ого варианта if contex.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: nil) {
contex.evaluatePolicy(LAPolicy.deviceOwnerAuthentication, localizedReason: "Use TouchID", reply: { wasSuccessful, _ in
if wasSuccessful {
print("Все получилось")
let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
let homeVC = mainStoryboard.instantiateViewController(withIdentifier: "HomeVC")
self.navigationController?.pushViewController(homeVC, animated: true)
} else {
print("Что-то пошло не так")
}
})
}
// -
try FileManager.default.moveItem(at: location, to: destinationURL)
// +
if fileManger.fileExists(atPath: destinationURL.path) {
try fileManger.removeItem(at: destinationURL)
}
try FileManager.default.moveItem(at: location, to: destinationURL)
var arr = [
"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"11", "12", "13", "14", "15", "16", "17", "18", "19", "20",
"21", "22", "23", "24", "25", "26", "27", "28", "29", "30",
"31", "32"
]
var res = [[String]]()
for x in stride(from: 0, through: 31, by: 4) {
res.append(Array(arr[x...x + 3]))
}
var panRecognizer = UIPanGestureRecognizer(target: self, action: #selector(move))
panRecognizer.minimumNumberOfTouches = 1
panRecognizer.maximumNumberOfTouches = 1
panRecognizer.delegate = self
yourView.addGestureRecognizer(panRecognizer)
@objc func move(_ sender: Any) {
if (sender as? UIPanGestureRecognizer)?.state == .changed {
// This will return you location in view
let currentPoint: CGPoint = sender.location(in: view)
// This will return you location in Scrollview
let scrollPoint: CGPoint = sender.location(in: sender.view.superview)
}
}
class MultiScrollViewController: UIViewController {
// ...
override func viewDidLoad() {
super.viewDidLoad()
firstView.delegate = self
secondView.delegate = self
}
// ...
}
extension MultiScrollViewController: UIScrollViewDelegate {
func scrollViewDidScroll(scrollView: UIScrollView) {
firstView.contentOffset = scrollView.contentOffset
secondView.contentOffset = scrollView.contentOffset
}
}
scrollToRow(at:at:animated:)
поместить в нужный метод делегата UITextView
.tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 44 // или что своё
где UITableViewAutomaticDimension, the table view is told to use the Auto Layout constraints and the contents of its cells to determine each cell’s height.
import AVFoundation
+ класс AVAudioPlayer
UITextField
. Для этих целей существует UITextFieldDelegate
. Или, если ты не знаешь что это такое, то просто посмотри внимательно, там есть такие события как Editing Changed/Did Begin/Did End(в том же списке, где ты и выбрал valueChanged). tableView: UITableView
. Наверное мне стоит глянуть на методы этого класса. https://developer.apple.com/documentation/uikit/ui...