gpt4 book ai didi

ios - 在 TableView 单元格 iOS 中设置 UILabels 的值

转载 作者:行者123 更新时间:2023-11-30 13:48:16 24 4
gpt4 key购买 nike

我是 Swift 和 iOS 开发新手,很抱歉提出这个初学者问题。我试图在我的 TableView 单元格中设置两个 UILabel 文本值和一个 UIImageView 。我有来自 API www.thecocktaildb.com

的数据

我正在从搜索栏中搜索和检索数据,例如:http://www.thecocktaildb.com/api/json/v1/1/search.php?s=margarita

我不知道如何将这些值获取到 UILabels/UIImageView。有人能指出我正确的方向吗?或者如果我在 Storyboard中设置不正确。谢谢!

下面附有我的 SearchViewController,其中包含搜索栏、表格 View 和表格 View 单元格。

My Search View Controller in my storyboard

下面附上我的 SearchViewController.swift 文件

class SearchViewController: UIViewController, UISearchBarDelegate, UITableViewDataSource, UITableViewDelegate {

@IBOutlet weak var TableView: UITableView!
@IBOutlet weak var SearchBar: UISearchBar!

// search in progress or not
var isSearching : Bool = false

override func viewDidLoad() {
super.viewDidLoad()

for subView in self.SearchBar.subviews
{
for subsubView in subView.subviews
{

if let textField = subsubView as? UITextField
{
textField.attributedPlaceholder = NSAttributedString(string: NSLocalizedString("Search", comment: ""))

}
}
}

// set search bar delegate
self.SearchBar.delegate = self
}

func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {

if self.SearchBar.text!.isEmpty {

// set searching false
self.isSearching = false

}else{

// set searghing true
self.isSearching = true

let userSearchInput = self.SearchBar.text!.lowercaseString

let newString = userSearchInput.stringByReplacingOccurrencesOfString(" ", withString: "%20", options: NSStringCompareOptions.LiteralSearch, range: nil)

let postEndpoint: String = "http://www.thecocktaildb.com/api/json/v1/1/search.php?s=" + newString

guard let url = NSURL(string: postEndpoint) else {
print("Error: cannot create URL")
return
}

let urlRequest = NSURLRequest(URL: url)
let config = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: config)

let task = session.dataTaskWithRequest(urlRequest, completionHandler: { (data, response, error) in
guard let responseData = data else {
print("Error: did not receive data")
return
}
guard error == nil else {
print("error calling GET on www.thecocktaildb.com")
print(error)
return
}
// parse the result as JSON, since that's what the API provides
let post: NSDictionary
do {
post = try NSJSONSerialization.JSONObjectWithData(responseData,
options: []) as! NSDictionary
} catch {
print("error trying to convert data to JSON")
return
}

var count = 1
if let drinks = post["drinks"] as? [NSDictionary] {
for drink in drinks {
if let strDrink = drink["strDrink"] as? String {
print(String(count) + ". " + strDrink)
count++
}
if let strCategory = drink["strCategory"] as? String {
print(" Category: " + strCategory)
}
if let strDrinkThumb = drink["strDrinkThumb"] as? String {
print(" Thumbnail Image: " + strDrinkThumb)
}
}
}

})
task.resume()

}

}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 0
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
return cell
}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

}

// hide kwyboard when search button clicked
func searchBarSearchButtonClicked(searchBar: UISearchBar) {
self.SearchBar.resignFirstResponder()
}

// hide keyboard when cancel button clicked
func searchBarCancelButtonClicked(searchBar: UISearchBar) {
self.SearchBar.text = ""
self.SearchBar.resignFirstResponder()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}

打印到控制台时获得的数据示例:

1. Margarita
Category: Ordinary Drink
Thumbnail Image: http://www.thecocktaildb.com/images/media/drink/wpxpvu1439905379.jpg
2. Margarita #2
Category: Ordinary Drink
3. Blue Margarita
Category: Ordinary Drink
Thumbnail Image: http://www.thecocktaildb.com/images/media/drink/qtvvyq1439905913.jpg
4. Peach Margarita
Category: Cocktail
5. Midori Margarita
Category: Ordinary Drink
6. Golden Margarita
Category: Cocktail
7. Purple Margarita
Category: Ordinary Drink
8. Mansion Margarita
Category: Ordinary Drink
9. JimPop's Margarita
Category: Ordinary Drink
10. Catalina Margarita
Category: Cocktail
11. Ultimate Margarita
Category: Cocktail
12. Whitecap Margarita
Category: Other/Unknown
Thumbnail Image: http://www.thecocktaildb.com/images/media/drink/srpxxp1441209622.jpg
13. Frozen Margarita #1
Category: Ordinary Drink
14. Frozen Margarita #2
Category: Ordinary Drink
15. Top Shelf Margarita
Category: Cocktail
16. BlackJack Margarita
Category: Ordinary Drink
17. Strawberry Margarita
Category: Ordinary Drink
Thumbnail Image: http://www.thecocktaildb.com/images/media/drink/tqyrpw1439905311.jpg
18. Bartender's Margarita
Category: Ordinary Drink
19. The Perfect Margarita #1
Category: Cocktail
20. The Perfect Margarita #2
Category: Cocktail
21. RumRunner's Easy Margarita
Category: Cocktail
22. Hand-Shaken Margarita on the Rocks
Category: Ordinary Drink
23. Ken and Kirsten's top shelf Margarita
Category: Ordinary Drink

最佳答案

UITableViews 在拉模型上工作,因此您需要将饮料存储到当前正在打印结果的 View Controller 上的数组变量中。然后在 TableView 上调用 reloadData。要以类型安全的方式存储饮料,请创建一个饮料模型类,其中包含名称和类别等属性。然后在 numberOfRowsInSection 中返回 Drinks.count ,并在 cellForRowAtIndexPath 中获取 Drinks[indexPath.row] ,您应该能够从中获取名称等,并使用它来填充 tableviewcell 中的标签。获取图像更加复杂,因为您需要发出另一个网络请求,但是一旦您使文本正常工作,您将取得良好的进展。

关于ios - 在 TableView 单元格 iOS 中设置 UILabels 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34645676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com