如何通过在 swift 中点击 collection 视图的单元格来重新加载 table 视图中的数据
How to reload data in table view by tapping the cell of collection view in swift
我在我的一个控制器中使用 swift 开发一个应用程序我同时使用 collection 视图和 table view.collection 视图,它们保持在滚动的控制器顶部水平并包含近 10 个单元格,table 视图仅保持在 collection 下方 view.i 已将 json(api) 数据传递给 collection 和 table 查看现在我必须调用另一个 json 数据(另一个 api),它是第一个 json 数据之前的子类别,然后如果我点击 collection 查看它应该调用第二个 api 并再次重新加载 table 视图以显示第二个 api 数据...如何完成此任务??
func jsonParsingFromURL () {
Alamofire.request(.POST, "http://something.com", parameters: nil, encoding: .URL, headers: nil).response { (req, res, data, error) -> Void in
// print(res)
// print(data)
let dataString = NSString(data: data!, encoding:NSUTF8StringEncoding)
print(dataString)
self.startParsing(data!)
self.collecStartParsing(data!)
}
}
func startParsing(data :NSData)
{
let dict: NSDictionary!=(try! NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers)) as! NSDictionary
for i in 0 ..< (dict.valueForKey("subcategory") as! NSArray).count
{
arrDict.addObject((dict.valueForKey("subcategory") as! NSArray) .objectAtIndex(i))
}
SecondTableView.reloadData()
}
func collecStartParsing(data :NSData){
let dict: NSDictionary!=(try! NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers)) as! NSDictionary
for i in 0 ..< (dict.valueForKey("subcategory_icons") as! NSArray).count
{
collectionitems.addObject((dict.valueForKey("subcategory_icons") as! NSArray) .objectAtIndex(i))
}
FirstCollectionView.reloadData()
}
我的 table 和 collection 视图的数据源方法:
func tableview cell for row at indexpath {
let cell = tableView.dequeueReusableCellWithIdentifier("SegueCell") as! SecondTableViewCell
let strTitle:NSString = arrDict[indexPath.row] .valueForKey("adtitle") as! NSString
cell.TitleLabel.text = strTitle as String
return cell
collection 视图:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("FirstCollectionView", forIndexPath: indexPath) as! FirstCollectionViewCell
let strTitle:NSString = collectionitems[indexPath.item] .valueForKey("subcategoryname") as! NSString
cell.TitleLabel.text = strTitle as String
return cell
它有助于先调用 api 并传递 data.now 我有另一个 api 为此我编写了不同的函数:
func jsonParsingForIcon () {
Alamofire.request(.POST, "http://www.mysecondapi.com", nil, encoding: .URL, headers: nil).response { (req, res, data, error) -> Void in
// print(res)
// print(data)
let dataString = NSString(data: data!, encoding:NSUTF8StringEncoding)
print(dataString)
}
}
现在 json(api) 都具有相同的键值对,点击 collection 视图的单元格应该调用第二个 api 函数并重新加载我的 table根据第二个apijson数据查看
mr.bista 答案应该被接受....
只是我们需要删除数组,即myarray.removeallobjects()
基本骨架:
func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {
let category = categoryArray[indexPath.row]
myAPI(category.id)
}
func myAPI(categoryID:String) {
//pass the categoryID into the parameter to get corresponding data.
callAPI {
if success {
tableArray = data from server
tableView.reloadData()
} else {
//some error occurred
}
}
}
我在我的一个控制器中使用 swift 开发一个应用程序我同时使用 collection 视图和 table view.collection 视图,它们保持在滚动的控制器顶部水平并包含近 10 个单元格,table 视图仅保持在 collection 下方 view.i 已将 json(api) 数据传递给 collection 和 table 查看现在我必须调用另一个 json 数据(另一个 api),它是第一个 json 数据之前的子类别,然后如果我点击 collection 查看它应该调用第二个 api 并再次重新加载 table 视图以显示第二个 api 数据...如何完成此任务??
func jsonParsingFromURL () {
Alamofire.request(.POST, "http://something.com", parameters: nil, encoding: .URL, headers: nil).response { (req, res, data, error) -> Void in
// print(res)
// print(data)
let dataString = NSString(data: data!, encoding:NSUTF8StringEncoding)
print(dataString)
self.startParsing(data!)
self.collecStartParsing(data!)
}
}
func startParsing(data :NSData)
{
let dict: NSDictionary!=(try! NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers)) as! NSDictionary
for i in 0 ..< (dict.valueForKey("subcategory") as! NSArray).count
{
arrDict.addObject((dict.valueForKey("subcategory") as! NSArray) .objectAtIndex(i))
}
SecondTableView.reloadData()
}
func collecStartParsing(data :NSData){
let dict: NSDictionary!=(try! NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers)) as! NSDictionary
for i in 0 ..< (dict.valueForKey("subcategory_icons") as! NSArray).count
{
collectionitems.addObject((dict.valueForKey("subcategory_icons") as! NSArray) .objectAtIndex(i))
}
FirstCollectionView.reloadData()
}
我的 table 和 collection 视图的数据源方法:
func tableview cell for row at indexpath {
let cell = tableView.dequeueReusableCellWithIdentifier("SegueCell") as! SecondTableViewCell
let strTitle:NSString = arrDict[indexPath.row] .valueForKey("adtitle") as! NSString
cell.TitleLabel.text = strTitle as String
return cell
collection 视图:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("FirstCollectionView", forIndexPath: indexPath) as! FirstCollectionViewCell
let strTitle:NSString = collectionitems[indexPath.item] .valueForKey("subcategoryname") as! NSString
cell.TitleLabel.text = strTitle as String
return cell
它有助于先调用 api 并传递 data.now 我有另一个 api 为此我编写了不同的函数:
func jsonParsingForIcon () {
Alamofire.request(.POST, "http://www.mysecondapi.com", nil, encoding: .URL, headers: nil).response { (req, res, data, error) -> Void in
// print(res)
// print(data)
let dataString = NSString(data: data!, encoding:NSUTF8StringEncoding)
print(dataString)
}
}
现在 json(api) 都具有相同的键值对,点击 collection 视图的单元格应该调用第二个 api 函数并重新加载我的 table根据第二个apijson数据查看
mr.bista 答案应该被接受....
只是我们需要删除数组,即myarray.removeallobjects()
基本骨架:
func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {
let category = categoryArray[indexPath.row]
myAPI(category.id)
}
func myAPI(categoryID:String) {
//pass the categoryID into the parameter to get corresponding data.
callAPI {
if success {
tableArray = data from server
tableView.reloadData()
} else {
//some error occurred
}
}
}