2015-01-13 7 views
0

Im 초심자이므로 간과되거나 간과하는 것처럼 보이는 것에 대해서는 사과드립니다.UILabel to UILabel

기본적으로, 화면에 날짜 선택 도구를 사용하여 UILabel을 업데이트 한 다음 UILabel 업데이트 결과를 가져 와서 이전 화면의 다른 UILabel로 다시 밀어 넣으려고합니다. 날짜 선택 도구가 멋지게 작동하며 예상대로 UILabel을 업데이트하지만, 코드 작성 방법을 알 수 없으므로 DatePicker의 결과로 첫 번째 UILabel을 업데이트 할 수 있습니다. 다음은 DatePicker에 대한 것입니다.

class StartDatePickerViewController: UIViewController { 


    @IBOutlet weak var dateLabel: UILabel! 
    @IBOutlet weak var datePicker: UIDatePicker! 


    override func viewDidLoad() { 
    super.viewDidLoad() 

    datePicker.addTarget(self, action: Selector("datePickerChanged:"), forControlEvents: UIControlEvents.ValueChanged) 

    // Do any additional setup after loading the view. 
} 

func datePickerChanged(datePicker:UIDatePicker) { 
    var dateFormatter = NSDateFormatter() 

    dateFormatter.dateStyle = NSDateFormatterStyle.ShortStyle 

    var strDate = dateFormatter.stringFromDate(datePicker.date) 
    dateLabel.text = strDate 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

은 내가 AddNewTradeViewController 내 UILabel의 startDateLabel를 업데이트 StartDatePickerViewController 필요하고 내가 제대로이 문제를 접근하는 방법을 모르겠어요. 모든 조언을 크게 주시면 감사하겠습니다!

답변

1

NSNotification 옵저버 또는 위임 추가 기능을 사용하면이 패턴을 따라야하는 데이터를 직접 보낼 수 있습니다. 혹시 두 번째 viewController에서 첫 번째 viewController로 pop-up하려고 할 때 위임 패턴 또는 NSNotification Observer (레이블 데이터를 두 개 이상의 장소에 표시하려면 NSNotification을 사용할 수 있음)를 호출 할 수 있습니다. 그렇지 않으면 위임 패턴이 1 대 1 메시지 전달에 적합합니다. 희망이 있으면 도움이 될 것입니다.

0

위임이라고하는 패턴을 사용해야합니다. 즉, datePickerChanged에서 AddNewTradeViewController에 대해 지정된 메서드를 호출한다는 의미입니다.

Swift에서 위임을 설정하는 방법은 here입니다.

0

당신의 질문에서 당신이 SecondView에서 다시 밀어 때 UILabel 첫 화면에서 업데이 트하려는 것을 이해합니다.

내 이해가 맞다면 다음과 같이하십시오. 당신의 secondViewController에서 firstviewContoller에 popback 그냥 lblString라는 이름으로 그 때에 프로퍼티에 대한 업데이트 된 값을 할당하면서

우선 이제 첫 번째보기 컨트롤러

@property (strong, nonatomic) NSString* lblString; 

하나 개는 NSString 속성을 정의합니다. 당신이 firstViewcontroller에 popBack과 당신이 사용하여 원하는 목적지까지 사용할 수있는 경우 지금 lblString이 업데이트 한 값을

UINavigationController가 모두의 목록을 유지 관리는 viewControllers에 컨트롤러를 밀어 루트 컨트롤러는 항상 0

Firstcontroller *firstcontroller = (Firstcontroller *)[self.navigationController.viewControllers objectAtIndex:0]; 
myController.lblString = @"Your Updated DatePickerValue" ; 
[self.navigationController popToViewController:myController animated:YES]; 

에있을 firstViewController.

+0

분명히 맞을 것 같습니다. 좋은 답변입니다. 내 문제는 지금 스위프트로 어떻게 옮겨 갈지 전혀 모르겠다. – trever