import UIKit
class ViewController: UIViewController, UICollectionViewDelegateFlowLayout, UICollectionViewDataSource {
var collectionView: UICollectionView?
var instanceOfCustomObject: CustomObject = CustomObject()
var accessToken: NSString!
var userDefaults: NSUserDefaults!
var responseDictionary: NSDictionary!
// var currentResponse: NSArray!
// the range represents integer values 0, 1, and 2
// the range now represents integer values 6, 7, and 8
let colorWheel = ColorWheel()
// let parse = Parse()
// var currentResponse: NSArray?
// struct photoCount {
// init(responseDictionary: NSDictionary) {
//
// // var currentResponse = responseDictionary["data"] as NSDictionary
//
// var currentResponse = responseDictionary.valueForKeyPath("data") as NSArray
// var photoCount = currentResponse.count as Int
// println(photoCount)
// }
// }
var photoCount: Int!
// private let api = "d4984c8cfa78689bd066d82bec820fd5"
override func viewDidLoad() {
super.viewDidLoad()
userDefaults = NSUserDefaults.standardUserDefaults()
self.accessToken = userDefaults!.objectForKey("accessToken") as NSString
println(self.accessToken)
// instanceOfCustomObject.someProperty = "Hello World"
// var accessToken : NSString? = NSString(instanceOfCustomObject.accessToken)
// println(accessToken)
// instanceOfCustomObject.authorize()
// instanceOfCustomObject.simpleAuth()
// Do any additional setup after loading the view, typically from a nib.
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
// layout.sectionInset = UIEdgeInsets(top: 20, left: 0, bottom: 0, right: 0)
layout.itemSize = CGSize(width: 124, height: 124)
layout.minimumInteritemSpacing = 1.0
layout.minimumLineSpacing = 1.0
collectionView = UICollectionView(frame: self.view.frame, collectionViewLayout: layout)
collectionView!.dataSource = self
collectionView!.delegate = self
collectionView!.registerClass(Cell.self, forCellWithReuseIdentifier: "Cell")
collectionView!.backgroundColor = UIColor.whiteColor()
self.view.addSubview(collectionView!)
getData()
}
func getData() -> Void {
let baseUrl = NSURL(string:"https://api.instagram.com/v1/users/3/media/recent/?access_token=(self.accessToken)")
let forcastUrl = NSURL(string: "", relativeToURL: baseUrl)
// let data = NSData(contentsOfURL: forcastUrl)
// println(data)
let sharedSession = NSURLSession.sharedSession()
let downloadTask: NSURLSessionDownloadTask = sharedSession.downloadTaskWithURL(baseUrl, completionHandler: { (location: NSURL!, response: NSURLResponse!, error: NSError!) -> Void in
// var urlContents = NSString.stringWithContentsOfURL(location, encoding: NSUTF8StringEncoding, error: nil)
// println(urlContents)
let dataObject = NSData(contentsOfURL: baseUrl)
// println(dataObject)
if (error == nil) {
let responseDictionary: NSDictionary = NSJSONSerialization.JSONObjectWithData(dataObject, options: nil, error: nil) as NSDictionary
var currentResponse = responseDictionary.valueForKeyPath("data") as NSArray
// println(currentResponse)
// self.currentResponse = currentResponse as NSArray
self.photoCount = currentResponse.count as Int
println(self.photoCount)
dispatch_async(dispatch_get_main_queue(), { () -> Void in
// self.temperatureLabel.text = "(currentWeather.temperature)"
// self.iconView.image = currentWeather.icon!
// self.currentTimeLabel.text = "At (currentWeather.currentTime!) it is"
// self.humidityLabel.text = "(currentWeather.humidity)"
// self.percipitationLabel.text = "(currentWeather.precipProbability)"
// self.summeryLabel.text = "(currentWeather.summary)"
//
// self.refreshActivityIndicator.stopAnimating()
// self.refreshActivityIndicator.hidden = true
//
// self.refreshButton.hidden = false
})
} else {
let networkIssueController = UIAlertController(title: "Error", message: "I got 99 problems but a bitch ain't one", preferredStyle: .ActionSheet)
let okButton = UIAlertAction(title: "OK", style: .Default, handler: nil)
networkIssueController.addAction(okButton)
let cancelButton = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil)
networkIssueController.addAction(cancelButton)
self.presentViewController(networkIssueController, animated: true, completion: nil)
dispatch_async(dispatch_get_main_queue(), { () -> Void in
//Stop refresh animation
// self.refreshActivityIndicator.stopAnimating()
// self.refreshActivityIndicator.hidden = true
// self.refreshButton.hidden = false
})
}
})
downloadTask.resume()
}
在 getData(( 函数中,一个名为"currentResponse"的变量检索一个 url 数组。然后,我对数组进行计数,并将数字分配给名为"photoCount"的变量
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
// var photoCount = parse.photoCount(currentResponse)
return photoCount
}
我想使用"photoCount"变量来告诉我的集合视图函数它应该有多少个部分! 有 20 个网址,所以它应该输出 20 个正方形,但目前 photoCount 为零!我需要将"photoCount"设为全局变量吗?多年来一直被困在这个问题上,请帮忙!
加载视图控制器时,集合视图的大小被分配为 nil,并且不会在任何时间、任何位置更新。您必须异步重新加载集合视图。
在你的 getData 函数中,输入以下内容:
dispatch_async(dispatch_get_main_queue(), {
self.photoCount = currentResponse.count as Int
self.collectionView.reloadData()
})