Ios 添加JSON数据时UITableView不工作
我正试图用从imgur获得的一些JSON数据加载一个表视图。我可以向我的后端发出一个请求,请求获取imgur数据,将其吐回给我,然后我可以填充表。然而,我遇到了一个非常奇怪的问题,数据在最后被切断。这是一幅画。如果我尝试进行另一次搜索,它不会将更多数据加载到表中,因此很明显,我在执行此操作时会破坏它。我真的不知道我做错了什么。我还试图让它在某个时候可以通过modals点击,而将可重用单元排出来也可能不正确,但我想我会在这个问题之后到达那里 无论如何,任何帮助都将不胜感激Ios 添加JSON数据时UITableView不工作,ios,json,swift,uitableview,Ios,Json,Swift,Uitableview,我正试图用从imgur获得的一些JSON数据加载一个表视图。我可以向我的后端发出一个请求,请求获取imgur数据,将其吐回给我,然后我可以填充表。然而,我遇到了一个非常奇怪的问题,数据在最后被切断。这是一幅画。如果我尝试进行另一次搜索,它不会将更多数据加载到表中,因此很明显,我在执行此操作时会破坏它。我真的不知道我做错了什么。我还试图让它在某个时候可以通过modals点击,而将可重用单元排出来也可能不正确,但我想我会在这个问题之后到达那里 无论如何,任何帮助都将不胜感激 class ViewCo
class ViewController3: UIViewController, UITextFieldDelegate,UITableViewDataSource {
var dataState: Data?
var linkArray = [String]()
var titleArray = [String]()
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var SearchTextField: UITextField!
@IBAction func SearchButton(_ sender: Any) {
let urlString = "http://localhost:3000/getimages"
Alamofire.request(urlString, method: .post, parameters: ["search": SearchTextField.text!],encoding: JSONEncoding.default, headers: nil).responseJSON {
response in
switch response.result {
case .success:
let json = JSON(response.data!)
for (_, subJson) in json["data"] {
if let link = subJson["link"].string {
self.linkArray.append(link)
}
if let title = subJson["title"].string{
self.titleArray.append(title)
}
}
print("this is linkArray ", self.linkArray)
print("this is titleArray ", self.titleArray)
self.dataUpdated()
break
case .failure(let error):
print(error)
}
}
}
@IBAction func BackToTabControl(_ sender: Any) {
let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let tabBarVC = storyBoard.instantiateViewController(withIdentifier: "tabBarController") as! UITabBarController
if let vc1 = tabBarVC.viewControllers?.first as? ViewController1 {
vc1.dataState = dataState
}
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.window?.rootViewController = tabBarVC
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.bounces = true
SearchTextField.returnKeyType = UIReturnKeyType.done
SearchTextField.delegate = self
tableView.dataSource = self
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return titleArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cellReuseIdentifier")! //1.
let text = titleArray[indexPath.row] //2.
cell.textLabel?.text = text //3.
return cell //4.
}
func dataUpdated() {
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
请尝试下一步:
if let label = cell.textLabel {
label.text = text
label.sizeToFit()
}
您必须在tableview中单击并按住以使其在模拟器中滚动…显然我不知道这一点。谢谢你们的帮助 看起来像是(自动)布局问题。你是否对原型单元设置了约束,先设置约束,然后再运行,当然它的自动布局问题我不是一个很聪明的人。我该怎么做?在constraint菜单中,我看到()我没有看到设置该约束的位置(即原型单元)。