私は迅速で問題があります。これはキャリアデータベースであり、選択したキャリアに従ってクラスをロードしたいテーブルにはコード内のリンクが表示されていますが、接続に問題がある場合は、関数の終了後に配列 "Courses"が読み込まれています。私は関数の開始時に呼び出すのですが、配列がロードされている間にアクティビティインジケータが表示され、実際に関数の最後に表示されることに気付きました。次に、アクティビティインジケータを作成する方法が問題です"コース"の配列は、キャリアのすべてのコースをロードするまで、テーブルの上にキャリアが押されてから。私:(!これはコードでください...JSONのバックグラウンドで配列をロードして、テーブルビューでの選別を行うと、アクティビティインジケータが消えない
[import UIKit
class CarreraTableViewController: UIViewController {
//Var to InicioApp ViewController
var CarreraSeleccionada = String()
//OK BarButton
@IBOutlet weak var Listo: UIBarButtonItem!
//Courses array
var Cursos = \[String\]()
//The Activity Indicator is in a UIView in the storyboard to more easily customize
@IBOutlet weak var ActivityIndicatorView: UIActivityIndicatorView!
@IBOutlet weak var ActivityContainer: UIView!
//Careers Array
var Carreras = \["Enlace Escolar - Antofagasta", "Enlace Escolar - Coquimbo", "Geología", "Ingeniería Civil Ambiental", "ICCI – Antofagasta", "ICCI – Coquimbo", "Ingeniería Civil", "Ingeniería Civil Industrial – Antofagasta", "Ingeniería Civil Industrial – Coquimbo", "Ingeniería Civil Metalúrgica", "Ingeniería Civil de Minas", "Ingeniería Civil Química", "Ingeniería en Construcción", "Ingeniería en Computación e Informática", "Ingeniería en Metalurgia", "Ingeniería en Procesos Químicos", "IPRYMA - Antofagasta", "IPRYMA - Coquimbo"\]
override func viewDidLoad() {
super.viewDidLoad()
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return Carreras.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellIdentifier = "MyCell"
let showData = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! CustomCellCarrera
let Carrera = Carreras\[indexPath.row\]
showData.CarreraLabel.text = Carrera
return showData
}
// Identifies which table row the user selected
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
// ================= At this point I have my question, because ActivityContainer and ActivityIndicatorView does not appear until the end function
Listo.enabled = false
ActivityContainer.hidden = false
ActivityIndicatorView.startAnimating()
let currentCell = tableView.cellForRowAtIndexPath(indexPath)! as! CustomCellCarrera
print(currentCell.CarreraLabel.text)
var arregloArea = \[String\]()
var arregloID = \[Int\]()
Cursos.removeAll()
var i = -1
if let CR = currentCell.CarreraLabel.text {
switch CR {
case "ICCI – Coquimbo":
i = 1
case "Ingeniería Civil Industrial – Coquimbo":
i = 2
case "ICCI – Antofagasta":
i = 10
case "Enlace Escolar - Antofagasta":
i = 15
case "Enlace Escolar - Coquimbo":
i = 14
case "Geología":
i = 16
case "Ingeniería Civil Ambiental":
i = 12
case "Ingeniería Civil":
i = 5
case "Ingeniería Civil Industrial – Antofagasta":
i = 4
case "Ingeniería Civil Metalúrgica":
i = 7
case "Ingeniería Civil de Minas":
i = 11
case "Ingeniería Civil Química":
i = 6
case "Ingeniería en Construcción":
i = 3
case "Ingeniería en Computación e Informática":
i = 13
case "Ingeniería en Metalurgia":
i = 17
case "Ingeniería en Procesos Químicos":
i = 18
case "IPRYMA - Antofagasta":
i = 8
case "IPRYMA - Coquimbo":
i = 9
default:
i = -1
}
}
//Varia i según carrera
let url = NSURL(string: "http://146.83.128.64/tongoy/g.php?&sala=-1&curso=-1&profesor=-1&semestre=-1&semestrec=-1&carrera=\(i)&area=-1")!
print(url)
let task = NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) -> Void in
if let urlContent = data {
do {
let jsonResult = try NSJSONSerialization.JSONObjectWithData(urlContent, options: NSJSONReadingOptions.MutableContainers)
for json in jsonResult as! Array<AnyObject> {
if let area = json\["area"\] as? String {
arregloArea.append(area)
} else {
}
if let id = json\["id"\] as? Int {
arregloID.append(id)
}else{
}
if let curso = json\["curso"\] as? String {
self.Cursos.append(curso)
}else{
}
}
} catch {
print("JSON serialization failed")
}
dump(self.Cursos)
}
}
task.resume()
CarreraSeleccionada = currentCell.CarreraLabel.text!
while Cursos.isEmpty{
}
if !Cursos.isEmpty{
Listo.enabled = true
ActivityIndicatorView.stopAnimating()
ActivityContainer.hidden = true
}
}
}
//To InicioApp VC
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?){
let DestViewController : InicioApp = segue.destinationViewController as! InicioApp
//Llamado a funcion de eliminar ramos duplicados
var RepCurso = removeDuplicates(Cursos)
RepCurso.sortInPlace(before)
print(RepCurso)
DestViewController.CursosCarrera = RepCurso
DestViewController.TableText = CarreraSeleccionada
}
func before(value1: String, value2: String) -> Bool {
// One string is alphabetically first.
// ... True means value1 precedes value2.
return value1 < value2;
}
func removeDuplicates(array: \[String\]) -> \[String\] {
var encountered = Set<String>()
var result: \[String\] = \[\]
for value in array {
if encountered.contains(value) {
// Do not add a duplicate element.
}
else {
// Add value to the set.
encountered.insert(value)
// ... Append the value.
result.append(value)
}
}
return result
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}][1]
それは働きます! ! ありがとう –