사용자가 테이블 뷰 행을 선택할 때 UISlider를 만들고 싶습니다. 최소값을 업데이트합니다. & 최대 값은 변수에 설정된 값으로 슬라이더를 이동합니다.테이블 행을 클릭 할 때 UISlider 컨트롤러 변경
슬라이더가 다른 ViewController 및 tableview에 있습니다. struct (아래 게시 됨)를 사용하여 슬라이더에 값을 전달하고 있습니다. 이 시점에서 뷰 컨트롤러 viewDidLoad에서 구조체 값을 설정할 때 슬라이더가 작동하도록 할 수 있습니다. 하지만 tableview 행을 선택하면 UIslider를 변경할 수 없습니다. 문제는 행이 선택 될 때 UIslider가있는 뷰가 새로 고쳐지지 않는다는 것입니다. Tableview는 컨테이너 뷰를 사용하여 슬라이더가있는 뷰에 포함됩니다. 또한 NotificationCenter
를 추가 슬라이더 할당을 리팩토링하는
struct GlobalSliderValues {
static var minimumValue = Int()
static var maximumValue = Int()
static var lowerValue = Int()
static var UpperValue = Int()
static var locationValue = Int()
static var sliderValue = Int()
static var setValue = Int()
}
// Slider ViewController
override func viewDidLoad() {
super.viewDidLoad()
sliderOutlet.minimumValue = Float(GlobalSliderValues.minimumValue)
sliderOutlet.maximumValue = Float(GlobalSliderValues.maximumValue)
sliderOutlet.isContinuous = true
sliderOutlet.tintColor = UIColor.green
sliderOutlet.value = Float(GlobalSliderValues.sliderValue)
}
// Method attempting to change Slider
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
switch indexPath.row {
case 3:
GlobalSliderValues.minimumValue = 100
GlobalSliderValues.maximumValue = 10000000
GlobalSliderValues.sliderValue = 100000000
default:
break
}
}
게시물을 가져 주셔서 감사합니다. 어디 refreshSlider() 함수를 넣을 지 모르겠습니다. 슬라이더와 tableView는 동일한 viewController에 연결되어 있지 않습니다. 슬라이더가있는 뷰 컨트롤러에 함수를 추가했는데 에러는 발생하지 않았습니다. 하지만 다른 viewController에있는 것처럼 "didSelectRowAt"를 호출 할 수 없습니다. tableView는 슬라이더 뷰 컨트롤러의 컨테이너에 포함됩니다. –
@ k.thomas 이해, 내 편집 확인 –