Мне нужно увеличить UITableView
height на основе UITableViewCell
Размер контента. Я использую Custom Google Auto Complete. У меня есть UITextField
. Когда я введу письмо в UITextField
, он вызовет метод делегата shouldChangeCharactersIn
.увеличить Высота таблицы на основе ячеек
Внутри этого метода я отправлю динамический запрос API автозаполнения Google, чтобы получить результат прогноза.
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if tableView.numberOfRows(inSection: 0) > 0
{
let newLength = (textField.text?.characters.count)! + string.characters.count - range.length
let enteredString = (textField.text! as NSString).replacingCharacters(in: range, with:string)
if newLength == 0 {
tableView.isHidden = true
}
if newLength > 0
{
address.removeAll()
self.tableView.isHidden = false
GetMethod("https://maps.googleapis.com/maps/api/place/autocomplete/json?input=\(enteredString)&key=MYAPIKEY", completion: { (resultDict) in
let resultArray = resultDict.object(forKey: "predictions")! as! NSArray
print(resultArray.count)
for temp in resultArray
{
let newtemp = temp as! NSDictionary
let tempAdd = newtemp.value(forKey:"description") as! String
let placeId = newtemp.value(forKey:"place_id") as! String
var dict = [String : AnyObject]()
dict["address"] = tempAdd as AnyObject?
dict["latlong"] = placeId as AnyObject?
self.address.append(dict as AnyObject)
print(newtemp.value(forKey:"description"))
print(self.address.count)
self.tableView.reloadData()
}
})
}
return true
}
После того как я буду хранить все адреса в адресную массив динамически, мне нужно увеличить UITableView
высоты на основе этого входящего контента адреса.
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cellIdentifier = "TableViewCell"
var cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier)
if cell == nil
{
cell = UITableViewCell(style: .default, reuseIdentifier: cellIdentifier)
}
let addresstoDisp = address[indexPath.row] as! NSDictionary
let name = addresstoDisp.value(forKey: "address")
cell?.textLabel?.numberOfLines = 0
cell?.translatesAutoresizingMaskIntoConstraints = false
cell?.textLabel?.lineBreakMode = NSLineBreakMode.byWordWrapping
cell?.textLabel?.textAlignment = NSTextAlignment.center
cell?.textLabel?.text = name as! String
return cell!
}
UITableViewCell
высота увеличивается отлично. Также мне нужно увеличить высоту tableView.
Почему вы хотите увеличить высоту стола? Позвольте табличному обозреванию охватить всю вашу страницу и спроектировать все внутри нее, она будет автоматически прокручиваться. – rptwsthi
У меня есть карты google в self.view и textField в верхней части карты. Если у меня есть только одна ячейка в представлении таблицы, я не хочу, чтобы представление таблицы охватывало полный контроллер просмотра. –
Используйте это в viewDidLoad, self.tableView.tableFooterView = [[UIView alloc] initWithFrame: CGRectZero]; – KAR