2012-08-25 3 views
0

Storyboard와 관련된 질문이 있습니다. seague를 통해 ViewA에있는 문자열의 값을 변경하고 싶습니다. 이는 ViewB가 Seague를 수행하고 ViewA에서 문자열 값을 변경하기위한 준비를해야 함을 의미합니다. 내 문제는 지금, 내 문자열의 가치가 변하지 남아있다.ios 5의 세그먼트를 통해 문자열에 액세스

ViewA.h 파일 :

@interface NewViewController : UITableViewController <MKAnnotation> 
{ 
    NSString *longString; 

} 
@property (weak, nonatomic) NSString *longString; 

ViewB.m 파일 :

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"transmitCoordsToNew"]) 
    { 
     NewViewController *controller = (NewViewController *)segue.destinationViewController; 
     controller.longString = [NSString stringWithFormat:@"%f", segueLong];  

    } 
} 

변수가 변경되지 않고 유지 또는 왜 내가 ViewA에서 더 운영에 어떤 변화를 볼 수없는 이유는 어떤 생각? 당신의 변수 segueLong에서 오는, 그러나 longString에 약한 참조를 갖는 가장 가능성이 문제를 일으키는 것입니다 사전에

감사합니다,

답변

2

는 잘 모르겠어요. 그 것을 강력한 참조로 변경하고 그것이 작동하는지 확인하십시오.

+0

좋습니다. String ("longString")을 강력한 참조로 변경했지만 디버거가 (prepareForSegue 메서드 다음에 중단 점을 두는 동안) longString이 여전히 비어 있음을 보여줍니다. 나는 그것을 변경 했음에도 불구하고 아무런 이유가 없다는 것을 알지 못한다. – Phil

+0

편집 : 기본적으로 segue가 완료되면 String이 지워진다는 것을 발견했다. – Phil

+0

longString의 값으로 설정했다. 나는 당신이 어떤 실수도하지 않으므로, 이것이 ivar라고 가정하고 있습니다. longString의 값 (및 유형, float이어야 함)을 확인하십시오. 아마도 예상했던 것과 다를 수 있습니다. –

0

NewViewController *controller[NSString stringWithFormat:@"%f", segueLong];에서 유효 (0이 아닌) 값을 받고있는 경우, 약 90 %는 '약한'속성 속성이 값을 nil로 설정하는 원인임을 확신합니다.

여기 이유가 있습니다!

[NSString stringWithFormat : @ "% f", segueLong]에는 prepareForSegue 메서드로 제한되는 범위가 있으며 또한 소유자가 없습니다 (일명 참조가 계산되지 않음). segueLong이 소유자이고 arc에 의해 해제되지 않더라도 stringWithFormat의 결과 NSString은 그렇지 않습니다!

약할 때부터 강하게 변경하면됩니다. :

@interface NewViewController : UITableViewController <MKAnnotation> 
{ 
    __strong NSString *longString; 

} 
@property (strong, nonatomic) NSString *longString; 

이있는 NSString stringWithFormat에 의해 생성 된 문자열이 NewViewController에 속하는 것을 보장!

+0

당신이 말한대로 해봤지만 작동하지 않습니다. 나는 또한 스코 츠의 명제를 조사했으나 여전히 이것에 대한 해결책은 없다. – Phil

+0

흠. 나는 당혹 스럽다. 나는 또한 그것을 깨닫지 못하면서 강한 변수가 무효화되는 비슷한 문제를 겪고있다. 통찰력이 있으면 알려 드리겠습니다. – HeadNinja

+0

좋습니다. 나는 그 문제를 아는 것에 매우 열중하고 ... – Phil