2017-11-09 26 views
0

레이블이 포함 된보기가 있고 레이블 값을 변경하는 단추가 있습니다. 단추에서 값을 하나씩 변경하는 대신 전체보기를 다시로드하여 레이블을 업데이트 할 수 있습니다.Swift에서 데이터가 변경된 후보기를 다시로드하는 방법

@IBOutlet weak var one: UILabel! 
    @IBOutlet weak var two: UILabel! 
    @IBOutlet weak var three: UILabel! 
.... 
    @IBOutlet weak var updateLabels: UIButton!{ 
     //doing something to change the value of the labels 
     //then wanna reload the whole view 
     viewDidLoad() 
    } 

나는 viewDidLoad() 메서드를 호출했지만 작동하지 않았습니다.

답변

1

귀하는 직접 viewDidLoad으로 전화하지 않아야합니다. 보기가 설치 준비가되었음을 나타내는 것으로서 OS가 호출하는 프레임 워크 기능입니다.

당신이 당신의 기능

func updateLabels() { 
     one.text = "one" 
     two.text = "two" 
     three.text = "three" 
} 

분리 된 경우는보다 나은 서비스를 제공 할 당신이 원하는 경우에 지금 당신이 updateLabels 함수를 호출 할 수 있습니다.

0

왜 모든 레이블을 메서드에 넣지 않습니까? 그리고 언제든지 다시로드해야합니다.

override func viewDidLoad() { 
    super.viewDidLoad() 

    updateLabels() 

} 

func updateLabels() { 
    one.text = "one" 
    two.text = "two" 
    three.text = "three" 
} 


@IBAction func updateLabels(_ sender: Any) { 
     updateLabels() 
} 
+0

@ShauketSheikh 나쁜 접근 방식이란 무엇입니까? 초기 데이터가있을 때 viewDidLoad 메서드에서 데이터를 업데이트하고 새롭게 업데이트 된 값이있는 경우 모든 메서드에서 동일한 메서드를 실행하여 업데이트합니다. –

-1

레이블을 업데이트하는 방법이 잘못되었습니다. 다음과 같이 당신이해야 할 것은 :

/// Set The Text Labels Text 
@IBAction func updateLabelText(){ 

    //Set Label Text 
    one.text = "one" 
    two.text = "two" 
    three.text = "three" 
} 
:

//Declare The Labels 
@IBOutlet var one: UILabel! 
@IBOutlet var two: UILabel! 
@IBOutlet var three: UILabel! 

는 그런 다음있는 UIButton에 의해 트리거되는 IBAction를 함수를 만들 :

을 라벨을 선언 당신은 그들이 인터페이스 빌더에 연결되어 보장처럼

물론 인터페이스 빌더의 UIButton 인스턴스에 연결하는 것을 기억하십시오.

희망이 도움이됩니다.

+1

사용자가 UIButton에서이 변경을 트리거하려고 했으므로 IBAction이이 문제를 처리하는 좋은 방법 일 수 있습니다. –