2016-08-09 2 views
2

100 % 확신 할 수 없지만 도움이 필요합니다.Swift에서 다른 클래스의 콘센트에 액세스

기본적으로, 파일 3 개 세트가 : w 스토리 보드의 ViewController /의 ViewController를 펜촉은> 컨트롤러 펜촉> 컨트롤러

스토리 보드의 tableviewcontroller로드 테이블 셀과 펜촉 중 하나는, 다른 하나는 단지이다 기본 스토리 보드보기 상단에 추가됩니다.

여기, 내가 뭐하는 거지 설명하기 위해 시도하는 코드입니다 :

let pickerView = UINib(nibName: "DateTimePickerView", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as! DateTimePickerView 

    let testFrame = CGRect(x: 0, y: 0, width: view.frame.size.width, height: 200) 

    pickerView.frame = testFrame 
    ReserveView.addSubview(pickerView) 
    pickerView.translatesAutoresizingMaskIntoConstraints = false 

    NSLayoutConstraint(item: pickerView, attribute: .Leading, relatedBy: .Equal, toItem: view, attribute: .LeadingMargin, multiplier: 1.0, constant: 0).active = true 

    NSLayoutConstraint(item: pickerView, attribute: .Trailing, relatedBy: .Equal, toItem: view, attribute: .TrailingMargin, multiplier: 1.0, constant: 0).active = true 

    NSLayoutConstraint(item: pickerView, attribute: .Bottom, relatedBy: .Equal, toItem: view, attribute: .BottomMargin, multiplier: 1.0, constant: 0.0).active = true 

이 표시됩니다보기 하단에 펜촉을 추가는. 달성하고자하는 것은 다음과 같습니다.

테이블 셀로로드되는 다른 펜촉에는 뷰 상단에 그려지는 pickerView에서 상호 작용하려는 버튼, 레이블 등이 있습니다.

바라기를이 이미지가 내가하려는 일을 분명히하는 데 도움이 될 수 있으며 왜 이것이 잘못된지 알 수 있습니다. 올바른 방법으로 느껴지지 않기 때문입니다.

궁극적으로 "pickerView"가 버튼 클릭에 표시되고 사용자가 날짜를 선택하고 확인하면 숨 깁니다. 여기

는 사진입니다 : 여기 Drawing of what I tried to describe

실제 프로젝트, 그래서 당신은 더 나은 내가 뭘하려고 오전 볼 수 있습니다 Actual Project SS

답변

0

을 나는 당신이로드 스토리 보드를 이해하는 바로는 펜촉이있는 테이블 펜과 셀이있는 펜촉과 피커 뷰가있는 펜촉이 있습니다.

스토리 보드에 tableview에 대한 참조와 변경해야하는 콘텐츠가있는 경우 pickerview에서 closures을 사용할 수 있습니다. 당신의 pickerview에서

는 다음을 추가, 당신은 당신의 피커 뷰를 초기화

func pickerDidChange(value: String) { 
    debugPrint("The picker changed") 
} 

다음 바로 위의 addSubview 추가 : 스토리 보드 클래스에서

var didChange: ((value: String)->())? 

를 다음 코드를 추가

pickerView.didChange = pickerDidChange 

이제 pickerDidChange func을 사용하여 필요한 데이터를 가져 와서 참조하는 tableView의 셀에 적용합니다.

가 pickerview에서 당신이 onchange를 방법에 다음을 추가합니다 :

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    if let didChange = didChange { 
     didChange("something") 
    } 
} 

당신이 대신 UIDatePicker을 사용하는 것입니다 경우, 내가 더 적합 할 것이다 고 생각하는 ... 대신 NSDate을 반환합니다.

나는 귀하의 질문을 올바르게 이해하고 귀하의 문제를 해결하기를 바랍니다.

+0

나는 조금 혼란스러워합니다. 변경 이벤트에 대한 내 IBAction에서는 pickerView 함수를 추가해야합니다. 나는 그것을 어떻게 생각하니? 바로 지금, 당신이 맞습니다, 그것은 NSDate 객체입니다. 하지만 DateTimePicker의 date 속성을 통해 액세스하고 있습니다. 'DateTimePicker.date' – Imperialized

+0

정말, 그 date Object를 pickerView xib 파일을로드하는 VC로 다시 전달해야합니다. 그러나 xib에는 UIView 유형의 고유 한 사용자 정의 클래스가 있습니다. 실제 선택기는 해당 클래스의 IBOutlet입니다. 잘하면 도움이됩니다. – Imperialized

+0

@Imperialized 문제가 해결되었거나 여전히 도움이 필요합니까? –

관련 문제