2014-10-31 46 views
0
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”的变量检索一个urls数组。那么我算阵列和号码分配给一个名为“光子计数”函数内的访问变量,并将其作为另一个函数的返回swift

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 


//  var photoCount = parse.photoCount(currentResponse) 
     return photoCount 
    } 

我想用“PHOTOCOUNT”变量来告诉我的集合视图功能,它应该有多少段具有可变!有20个网址,所以它应该输出20个方格,但目前的photoCount是零!我是否需要将“photoCount”设置为全局变量?一直困在这个很长时间,请帮助!

回答

0

您收藏视图的大小分配为当您的视图控制器加载并且不会随时更新,任何地方。您必须异步重新加载您的集合视图。

在你的getData功能,把这个:

dispatch_async(dispatch_get_main_queue(), { 
    self.photoCount = currentResponse.count as Int 
    self.collectionView.reloadData()   
}) 
+0

Xcode中说,当展开是PHOTOCOUNT为零。 – alemac852 2014-10-31 08:08:18

相关问题