मैं एक ऐप करने की कोशिश कर रहा हूं जिसमें JSON से डेटा प्राप्त किया गया था।

नीचे दी गई तस्वीर में आप परियोजना देख सकते हैं: प्रोजेक्ट
यदि हम फोटो पर क्लिक करते हैं तो विवरण पृष्ठ खुल जाता है। समस्या इसलिए है क्योंकि मुझे नहीं पता कि विवरण पृष्ठ में दिखाए गए डेटा को कैसे उठाया जाए। क्रिप्या मेरि सहायता करे। यहाँ कोड है

import UIKit
import Alamofire
import AlamofireImage
import SwiftyJSON

class ViewController: UIViewController ,UITableViewDelegate,UITableViewDataSource,UISearchBarDelegate {

    @IBOutlet weak var searchbarValue: UISearchBar!
    weak open var delegate: UISearchBarDelegate?
    @IBOutlet weak var tableView: UITableView!

    var albumArray = [AnyObject]()
    var url = ("https://jsonplaceholder.typicode.com/photos")

        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
             self.searchbarValue?.delegate = self
                  Alamofire.request("https://jsonplaceholder.typicode.com/photos").responseJSON { (responseData) -> Void in
                if((responseData.result.value) != nil) {
                    let swiftyJsonVar = JSON(responseData.result.value!)
                       if let resData = swiftyJsonVar[].arrayObject {
                        self.albumArray = resData as [AnyObject]; ()
                    }
                    if self.albumArray.count > 0 {
                        self.tableView.reloadData()
                    }
                }
            }

        }
    public func searchBarTextDidEndEditing(_ searchBar: UISearchBar) // called when text ends editing
    {
        callAlamo(searchTerm: searchbarValue.text!)
    }

    func callAlamo(searchTerm: String)
    {
        Alamofire.request("https://jsonplaceholder.typicode.com/photos").responseJSON { (responseData) -> Void in
            if((responseData.result.value) != nil) {
                let swiftyJsonVar = JSON(responseData.result.value!)
                if let resData = swiftyJsonVar[].arrayObject {
                    self.albumArray = resData as [AnyObject]; ()
                }
                if self.albumArray.count > 0 {
                    self.tableView.reloadData()
                }
            }
        }
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return albumArray.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? CostumTableViewCell

        let title = albumArray[indexPath.row]
        cell?.titleLabel?.text = title["title"] as? String
        //cell?.url?.image = UIImage(data: title as! Data)
        let imageUrl = title["thumbnailUrl"] as? String
        //print(imageUrl)

        let urlRequest = URLRequest(url: URL(string: imageUrl!)!)
        Alamofire.request(urlRequest).responseImage { response in

            if let image = response.result.value {
               // print("image downloaded: \(title["url"])")
                cell?.url?.image = image
            }
        }
        return cell!
    }

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        performSegue(withIdentifier: "showDetails", sender: self)
    }
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let indexPath = self.tableView.indexPathForSelectedRow?.row

        let vc = segue.destination as! DetailsViewController
       //here should be the code
    }

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

}

इसके अलावा आप विवरण दृश्य नियंत्रक कोड देख सकते हैं:

import UIKit

class DetailsViewController: UIViewController {

    var image2 = UIImage()
    var title2 = String()

    @IBOutlet var mainImageView: UIImageView!
    @IBOutlet var songTitle: UILabel!

    override func viewDidLoad() {

        songTitle.text = title2
        mainImageView.image = image2
    }
}
0
Duffy DD 26 जून 2018, 09:53

2 जवाब

सबसे बढ़िया उत्तर

आप नीचे दिए गए कोड का उपयोग करके आसानी से टेबलव्यू से डिटेल व्यू तक वैल्यू पास कर सकते हैं:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let indexPath = self.tableView.indexPathForSelectedRow

    let cell : CostumTableViewCell = self.tableView.cellForRow(at: indexPath!) as! CostumTableViewCell

    let vc = segue.destination as! DetailsViewController

    vc.image2 = cell.url.image!
    vc.title2 = cell.titleLabel.text!
    }
2
Vinodh 26 जून 2018, 12:35
class ViewController: UIViewController ,UITableViewDelegate,UITableViewDataSource,UISearchBarDelegate {


var customArr = [CustomElement]()
var arr = [Any]()

// In viewDidLoad , you can append element to customArr


func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    var image = customArr[indexpath.row].image
    var title = customArr[indexpath.row].title

    arr.append(image)
    arr.append(title)

    performSegue(withIdentifier: "showDetails", sender: arr)
}


override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let indexPath = self.tableView.indexPathForSelectedRow?.row

    if segue.identifier = "showDetails" {
        if let vc = segue.destination as! DetailsViewController {
        vc.arr = sender
        }

    }

   //here should be the code
}

}





class DetailsViewController: UIViewController {

    var arr = [Any]()
}
0
Ali Ihsan URAL 26 जून 2018, 11:11