2014-05-25 11 views
0

컨트롤러 A와 B가 두 개 있습니다.출구 속성을 사용하여 Segue를 컨트롤러에서 다른 컨트롤러로 전달할 수 없습니까?

B에는 UISwitch IBOutlet이 있습니다.

나는 A로부터 SEGUE를 사용

,

switch.on = YES이 작동하지 않습니다. 나는 값이 switch에 전달할 수

@property (strong, nonatomic) NSNumber* switchvalue; 

나는 B의 또 다른 속성을 선언하는 경우, switch에 말을

.

누구나 단서가 있습니까? 컨트롤에 직접 속성을 설정할 수 없다는 것은 지겨운 일입니다.

+0

IBOutlets이 SEGUE 수행 시간에 설정되지 않은 시도 할 수 있습니다. 따라서 정보를 전달하려면 임시 속성을 사용하고 viewDidLoad 또는 viewWillAppear 메서드에서 콘센트를 설정해야합니다. –

+0

http://stackoverflow.com/a/23403979/294884 – Fattie

답변

1

prepareForSegue에 IBOutlet의 값을 설정할 수 없습니다.이 메서드를 호출 할 때 콘센트가 만들어지지 않았기 때문입니다. 코드를 디버그하면 prepareForSegue이 호출 될 때 UISwitch 값이 nil이라는 것을 알 수 있습니다.

의 NSNumber 속성을 설정하는 대신 this

+0

일반 속성을 추가합니다. 내가 디버깅 할 때, 나는 또한 정상적인 속성이 nil이라는 것도 알 수있다. 값은 해당 일반 속성에 전달됩니다. –

+0

문자열에 값이 없어서 문자열이 nil입니다. 값을 설정할 수 있습니다. IBOutlet의 경우 콘센트에 값을 설정하려고하지 않고 속성에 지정하려고합니다. 예를 들어, controller.string = @ "a"는 할 수 있지만 label이 nil이므로 controller.label.text = @ "a"는 할 수 없습니다. 따라서 텍스트 속성은 변경할 수 없습니다. 그 차이가 있습니다. –