Я относительно новичок в Swift. Я попытался найти и решить проблему, но я не могу найти ответы. Это не должно быть так сложно. Надеюсь, вы, ребята, можете мне помочь. Я борюсь с этой проблемой в течение нескольких дней:Загрузка массива в TableView на основе сегмента управления
Я создал таблицу, которая загружает массив кортежей из другого .swift-файла. Это прекрасно работает! Теперь я хочу, чтобы tableview выбирал .swift на основе «управления сегментом». Поэтому, если Segment-Control переключится на «A», я хочу, чтобы он отображал массив «PSSCBOOKMac.Swift», для B это был массив «PSSCBOOKWin.swift».
Действие ist написано правильно, я полагаю (печатные заявления работают). Но изменение контроля сегмента не влияет на Tableview. Мое предположение: сегмент-контроль не влияет на представление таблицы, потому что он был загружен раньше, и я не могу изменить значение. Как я могу это достичь?
Приветствия за любые ответы!
Вот код:
import UIKit
class ViewController: UIViewController, UITableViewDataSource {
@IBOutlet weak var PSSCSegmentControl: UISegmentedControl!
//LOAD ARRAY FROM PSSCBOOK.SWIFT
var PSSCBook = PSSCBOOKMac()
@IBAction func PSSCSegmentControlChoose(sender: AnyObject) {
if PSSCSegmentControl.selectedSegmentIndex == 0 {
var PSSCBook = PSSCBOOKMac()
println("im mac")
} else {
var PSSCBook = PSSCBOOKWin()
println("im win")
}
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 2
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0 {
return PSSCBook.PSSCTools.count
} else {
return PSSCBook.PSSCFile.count
}
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("PSCell", forIndexPath: indexPath) as! UITableViewCell
if indexPath.section == 0 {
let (shortCutTitle,shortCutKey) = PSSCBook.PSSCTools[indexPath.row]
cell.textLabel?.text = shortCutTitle
cell.detailTextLabel?.text = shortCutKey
} else {
let (shortCutTitle,shortCutKey) = PSSCBook.PSSCFile[indexPath.row]
cell.textLabel?.text = shortCutTitle
cell.detailTextLabel?.text = shortCutKey
}
/* var PSIcon = UIImage(named: "PSIcon")
cell.imageView?.image = PSIcon */
return cell
}
func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
if section == 0 {
return "Tools"
} else {
return "File"
}
}
}
Большое спасибо! Это звучит очень логично. К сожалению, xcode показывает мне ошибку в «self.tableView.reloadData();» линия. В нем говорится: «Нельзя вызывать« reloadData »без аргументов. Идеи – Jeffrey
Вы пробовали, возможно, ошибаться в ошибке, а не просто ждать, пока кто-то решит вашу проблему? (http://stackoverflow.com/questions/30733126/swift-cannot-invoke-reloaddata-with-no-arguments) –
Да, вы правы. Обычно я это делаю. Думал, что я пропустил какую-то деталь. Благодарю. – Jeffrey