각 셀을 텍스트로 하드 코딩 된 UILabel로 채우는 TableView가있는 페이지가 있습니다. 나는 온라인에서 얻을 수있는 JSON에서 UILabels을 채우고 싶습니다.JSON의 제목이있는 테이블로드
코드 :
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
var objects: NSMutableArray! = NSMutableArray()
override func viewDidLoad(){
super.viewDidLoad()
self.objects.add("iPhone")
self.objects.add("Apple Watch")
self.objects.add("Mac")
self.objects.add("Test")
self.tableView.reloadData()
}
override func didReceiveMemoryWarning(){
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func numberOfSectionsInTableView(_ tableView: UITableView) -> Int{
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
return self.objects.count
}
func tableView(_ tableView: UITableView, cellForRowAtIndexPath indexPath: IndexPath) -> UITableViewCell{
let cell = self.tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableViewCell
cell.titleLabel.text = self.objects.object(at: (indexPath as NSIndexPath).row) as? String
//cell.logButton.tag = (indexPath as NSIndexPath).row;
//cell.logButton.addTarget(self, action: #selector(ViewController.logAction(_:)), for: .touchUpInside)
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAtIndexPath indexPath: IndexPath){
self.performSegue(withIdentifier: "showView", sender: self)
}
@IBAction func logAction(_ sender: UIButton) {
let titleString = self.objects[sender.tag] as? String
let firstActivityItem = "\(titleString!)"
let activityViewController : UIActivityViewController = UIActivityViewController(activityItems: [firstActivityItem], applicationActivities: nil)
self.present(activityViewController, animated: true, completion: nil)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?){
if (segue.identifier == "showView"){
let upcoming: NewViewController = segue.destination as! NewViewController
let indexPath = self.tableView.indexPathForSelectedRow!
let titleString = self.objects.object(at: indexPath.row) as? String
upcoming.titleString = titleString
self.tableView.deselectRow(at: indexPath, animated: true)
}
}
}
시뮬레이터 일단
내가 페이지를 열어이의의 TableView는 "라벨"로 4 개 개의 셀이 무엇이든에 추가 된로 변경됩니다 objects
배열 (이 경우 iPhone, Apple Watch, Mac 및 Test)입니다. 하드 코딩 된 것보다 JSON 파일에서로드 된 항목을 갖고 싶습니다.
필자는 PickerView를 사용하여 동일한 작업을 수행했지만이 작업을 수행하는 방법을 파악하는 데 어려움을 겪고 있습니다.
:.if let JSON = response.result.value as? [String:AnyObject] {
self.mypickerview.delegate = self
self.mypickerview.dataSource = self
let result = JSON.values.flatMap({ String(describing: $0) })
self.pickerData.append(contentsOf: result)
self.pickerData.sort()
self.verbose.text = "Content saved!"
self.mypickerview.reloadAllComponents()
self.mypickerview.delegate = self;
self.verbose.text = "Finished Loading!"
}
}
JSON 파일에서
Alamofire.request ("example.com/file.json") responseJSON {응답 : 여기에 도움이된다면 그것은 내 PickerView으로 수행 된 방법입니다
{"One":"Mac","Two":"Apple iPhone","Three":"Test"}
당신은 아무것도 시도? 기본적으로 PickerView에서 수행되는 것과 같습니다. – Caleb
@Caleb이 코드는 NSMutableArray에서 다음과 같이 작동하지 않습니다.'var pickerData : [String] = [String]()'그래서 NSMutableArray를 일부 코드로 일반 배열로 변환하려고 시도했지만, 일하지 마라. 그것은 빈 TableView 보여 – Matt