2014-11-27 3 views
0
// 
// ViewController.swift 
// Fashun 
// 
// Created by Alex Macleod on 20/10/14. 
// Copyright (c) 2014 Alex Macleod. All rights reserved. 
// 

import UIKit 

class ViewController: UIViewController, UICollectionViewDelegateFlowLayout, UICollectionViewDataSource { 

var collectionView: UICollectionView? 

var instanceOfCustomObject: CustomObject = CustomObject() 
var accessToken: NSString! = "1570900151.c2711e8.75915e1949da40f395bf22e17101b43d" 
//var userDefaults: NSUserDefaults! 
let colorWheel = ColorWheel() 
var photoCount: Int! = 0 
let photos = NSMutableArray() 

    class PhotoAndData { 
     var img: UIImage = UIImage() 
     var date: Int = 0 
     var likes: Int = 0 
     var userLikePct: Float = 0 
     init(){ 
     } 
    } 

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) 
// println("viewDidLoad") 
// instanceOfCustomObject.simpleAuth() 
    instanceOfCustomObject.authorize() 

// 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() 
// imageCount() 

} 

    func getData() -> Void { 
//// 
     let tuulavintageUrl = NSURL(string:"https://api.instagram.com/v1/users/7522782/media/recent/?access_token=\(self.accessToken)") 
     let wendyslookbookUrl = NSURL(string:"https://api.instagram.com/v1/users/14454619/media/recent/?access_token=\(self.accessToken)") 
//   
//  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 tuulavintageData = NSData(contentsOfURL: tuulavintageUrl!) 
      let wendyslookbookData = NSData(contentsOfURL: wendyslookbookUrl!) 

      if (tuulavintageData != nil) & (wendyslookbookData != nil) { 

       dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), { 

        let tuulavintageDictionary: NSDictionary = NSJSONSerialization.JSONObjectWithData(tuulavintageData!, options: nil, error: nil) as NSDictionary 
        var tuulavintageImageResponse = tuulavintageDictionary.valueForKeyPath("data.images.standard_resolution.url") as NSArray 
        var tuulavintageTimeResponse = tuulavintageDictionary.valueForKeyPath("data.created_time") as NSArray 
        var tuulavintageLikeResponse = tuulavintageDictionary.valueForKeyPath("data.likes.count") as NSArray 
//     println(tuulavintageTimeResponse) 
        self.addToPhotoArray(tuulavintageImageResponse, times: tuulavintageTimeResponse, likes: tuulavintageLikeResponse) 

        let wendyslookbookDictionary: NSDictionary = NSJSONSerialization.JSONObjectWithData(wendyslookbookData!, options: nil, error: nil) as NSDictionary 
        var wendyslookbookImageResponse = wendyslookbookDictionary.valueForKeyPath("data.images.standard_resolution.url") as NSArray 
        var wendyslookbookTimeResponse = wendyslookbookDictionary.valueForKeyPath("data.created_time") as NSArray 
        var wendyslookbookLikeResponse = wendyslookbookDictionary.valueForKeyPath("data.likes.count") as NSArray 
        //     println(wendyslookbookTimeResponse) 
        self.addToPhotoArray(wendyslookbookImageResponse, times:wendyslookbookTimeResponse, likes:wendyslookbookLikeResponse) 

        self.photos.sortUsingComparator({ (a, b) -> NSComparisonResult in 
         let x = a as PhotoAndData 
         let y = b as PhotoAndData 
         if x.userLikePct < y.userLikePct { 
          return NSComparisonResult.OrderedDescending 
         } 
         return NSComparisonResult.OrderedAscending 
        }) 
// 
        dispatch_async(dispatch_get_main_queue(), {() -> Void in 

         self.photoCount = tuulavintageImageResponse.count + wendyslookbookImageResponse.count as Int 

         self.collectionView?.reloadData() 

        }) 
       }) 

      } else { 

       let networkIssueController = UIAlertController(title: "Error", message: "Something went wrong get a better phone you pleb!", 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 

       }) 
      } 
    } 

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

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

    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
     let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as Cell 
    //    println(photos) 
    //   cell.textLabel.text = "Text" 
     var indexToUse = indexPath.row 
     if indexPath.row >= photos.count { 
      indexToUse = photos.count - 1 
     } 
     let data = photos.objectAtIndex(indexToUse) as PhotoAndData 
     cell.imageView.image = data.img as UIImage 
    // cell.photo = self.photos[indexPath.row] as? NSDictionary 
//  cell.imageView.backgroundColor = colorWheel.randomColor() 

     return cell 
    } 

나는 Instagrams API를 호출하여 일부 이미지를 구문 분석 한 다음 instagrams app와 같은 사각형 모음으로 채 웁니다. 프로그래밍 방식으로 내 콜렉션 뷰 셀 중 하나를 탭하면 새로운 "세부적인 뷰 컨트롤러"로 어떻게 연결합니까?자세히보기 viewcontroller swift

답변

1

는 해당의 ViewController에 (또는 뭔가 유사한 이름)을 UICollecitonViewDelegate을 추가하고이 방법을 정의 할 필요가 : 그 새로운 컨트롤러에 데이터를

//MARK: - UICollectionViewDelegate 

func collectionView(collection: UICollectionView, selectedItemIndex: NSIndexPath) 
{ 
    //As sender send any data you need from the current Selected CollectionView 
    self.performSegueWithIdentifier("identifier", sender: self) 
} 

이제 단지를 통해하자를하거나 SegueController을 얻고 설정하는 것이 너는 필요해.

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { 
    segue.desntinationViewController as MySegueViewController//(Your Segue View Controller) 
     // pass data to next view 


} 

PS : 난 내 맥에 아닙니다 때문에 올바른 이름을 결정하는 데 도움이 할 수있는 편집기 나 텍스트 Completer를 사용하십시오 메소드의 이름에 대한 몇 가지 구문 오류가있을 수 있습니다.

그러나 이것으로 Segue Controller를 호출하면됩니다. 또한 Storyboard 파일에 Segue 식별자 이름을 설정해야합니다. 그렇지 않으면 올바르게 작동하지 않습니다.

+0

보기에이 코드를 작성 내가 선택한 셀의 사진? – alemac852

+0

@ alemac852 메소드 매개 변수 "SelectedItemIndex.row"에 의해 주어진 indez를 사용하여 항목을 가져와야합니다. –

1

1 단계 : creat var indexPath : IndexPath? 및 배열은 상세보기 페이지에서 이미지를 유지

2 단계 : 그래서 응용 프로그램은 "detailedViewController"에 segueing 그러나 나는 통과를 어떻게 알 수 있습니까 가지고

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    if let detailPage = segue.destination as? DetailPage { 
     let cell = sender as! MyCollectionViewCell 
     let indexPath = self.MyCollectionView.indexPath(for: cell) 
     detailPage.indexPath = indexPath 
     detailPage.YourArray = self.YourDetailPageArray 
    } 
} 
관련 문제