#ios #swift #xcode
#iOS #swift #xcode
Вопрос:
давний слушатель, впервые вызывающий абонента Первый пост так что будь проще со мной, если я не поступил правильно, я заранее приношу извинения. Меня лучше всего описать как «трудолюбивого», когда дело доходит до кодирования, но мне это нравится. Я работаю над приложением, которое отображает разделы акта whs с использованием представлений выбора. Я могу заставить первый сборщик обновлять метки и содержимое второго сборщика, но я не могу получить какие-либо данные от второго сборщика, что бы я ни пытался. Акт состоит из разделов, подразделов, параграфов и подпунктов … не во всех разделах одинаковое количество подразделов и т.д.
Приведенный ниже код: класс ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutlet weak var picker1: UIPickerView!
@IBOutlet weak var sectionLabel: UILabel!
@IBOutlet weak var sectionNumberLabel: UILabel!
@IBOutlet weak var subSectionLabel: UILabel!
@IBOutlet weak var subSectionNumberLabel: UILabel!
@IBOutlet weak var paragraphLabel: UILabel!
@IBOutlet weak var paragraphNumberLabel: UILabel!
@IBOutlet weak var subParagraphLabel: UILabel!
@IBOutlet weak var subParagraphNumberLabel: UILabel!
var sections = ["","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20"]
var subSections = ["","1","2","3","4","5","6","7","8","9","10"]
var paragraphs = ["","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
var subParagraphs = ["","i","ii","iii","iv","v","vi","vii","viii","ix","x","xi","xii","xiii","xiv","xv"]
override func viewDidLoad() {
super.viewDidLoad()
overrideUserInterfaceStyle = .light
picker1.delegate = self
picker1.dataSource = self
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 4
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if component == 0 {
return sections.count
} else if component == 1 {
return subSections.count
} else if component == 2 {
return paragraphs.count
} else if component == 3 {
return subParagraphs.count
} else {
return 0
}
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if component == 0 {
return String(sections[row])
} else if component == 1 {
return String(subSections[row])
} else if component == 2 {
return String(paragraphs[row])
} else if component == 3 {
return String(subParagraphs[row])
} else {
return ""
}
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if component == 0 {
let str = sections[row]
if str == "5" {
sectionNumberLabel.text = "5"
subSections = ["1","2","3","4","5","6","7","8"]
sectionLabel.text = "Meaning of a person conducting a business or undertaking"
subSectionNumberLabel.text = "1"
subSectionLabel.text = "For this Act, a person conducts a business or undertaking -"
}
else if str == "6" {
sectionNumberLabel.text = "6"
subSections = ["1","2","3","4","5"]
sectionLabel.text = "Meaning of a supply"
subSectionNumberLabel.text = "1"
subSectionLabel.text = "A supply of a thing includes a supply and resupply of the thing by the way of sale, exchange, lease, hire or hire-purchase, whether as a principle or agent"
}
else if str == "7" {
sectionNumberLabel.text = "7"
subSections = ["1","2","3"]
sectionLabel.text = "Meaning of a worker"
subSectionNumberLabel.text = "1"
subSectionLabel.text = "A person is a worker if the person carries out work in any capacity for a person conducting a business or undertaking, including work as:"
}
Я УДАЛИЛ КОД ОТСЮДА, ПОЭТОМУ СООБЩЕНИЕ НЕ ТАКОЕ БОЛЬШОЕ
else {
subSections = [""]
sectionLabel.text = ""
sectionNumberLabel.text = ""
subSectionLabel.text = ""
subSectionNumberLabel.text = ""
paragraphLabel.text = ""
paragraphNumberLabel.text = ""
subParagraphLabel.text = ""
subParagraphNumberLabel.text = ""
}
picker1.reloadAllComponents()
}
}
}
Второй сборщик отображает правильное количество подразделов, но когда я перемещаю этот сборщик, ничего updates…my вопрос в следующем: как мне получить информацию от второго сборщика, третьего сборщика и четвертого сборщика? Приветствуются любые советы или указания по соответствующим руководствам и т. Д. … с новым годом, Бретт.
Ответ №1:
Привет, БреттР, и добро пожаловать в наше сообщество! Давайте проясним для вас некоторые вещи.
- Вы создали один инструмент выбора с 4 компонентами.
- Компоненты в picker — это разные столбцы, которые вы видите, и пользователь может прокручивать по вертикали, чтобы выбрать один из доступных вариантов.
- Чтобы определить, какой из ваших компонентов был обновлен, вы должны использовать параметр компонента метода делегирования
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
Итак, ваш код должен выглядеть так:
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
print("row: (row) of: ")
switch component {
case 0:
print("first component")
case 1:
print("second component")
case 2:
print("third component")
case 3:
print("fourht component")
default:
print("unhandling compoment")
}
print("selectedn")
}
Я также предлагаю вам потратить некоторое время на чтение / чтение этого руководства https://codewithchris.com/uipickerview-example / чрезвычайно полезен и по существу.
Комментарии:
1. Привет, кстефану … спасибо. Я внес изменения и ознакомлюсь с руководством. Ценю время, которое вы потратили на ответы… надеюсь, ваш новый год был приятным и безопасным!
2. Спасибо BrettR за пожелания, желаю вам всего наилучшего. Пожалуйста, отметьте мой ответ принятым, чтобы помочь большему количеству людей найти правильный ответ на тот же вопрос, что и вы. Удачи
![]()