2010-07-20 4 views
0

사전에서 UITextView로 내용을 가져 오려고합니다.UITextView.text 속성이 처음으로 업데이트되지 않는 경우 클립이 나타나거나 표시되지 않습니다.

24 -> 98 
25 -> 1.9 
26 -> 0.1 

내가 오름차순으로 정렬 사전에서 키를 포함하는 NSArray를이 : 사전은 예를 들어 백분율와 결합 분자 질량이 포함되어 있습니다. 이 방법은 수행하지, 어떤 이유

24: 89 
25: 1.9 
26: 0.1 

이이처럼 보이는 문자열을 만들어야합니다

-(void)detailIsotopes:(NSMutableDictionary *)isotopes withOrder:(NSMutableArray *)order{ 
NSMutableString *detailString = [[NSMutableString alloc] init]; 

for (NSNumber *mass in order){ 
    [detailString appendString:[NSString stringWithFormat:@"%d: %f\n", [mass integerValue], [[isotopes valueForKey:[NSString stringWithFormat:@"%@", mass]] floatValue]]]; 
} 

NSLog(@"%@", detailString); 
textField.text = detailString; 
[detailString release]; 
} 

: 그래서, 여기에 내 코드가 textField.text 할 속성으로 설정하는 문자열을 생성하는 것입니다 처음에는 아무것도 실행하지 않습니다. 올바른 문자열을 출력하는 NSLog 출력을 봅니다. 그러나 UITextView의 내용은 변경되지 않습니다. Interface Builder에서 'Lorem ipsum dolor sit amet ...'으로 유지됩니다. 이 방법을 다시 실행하면 작동합니다.

UITextView는 일부 텍스트를 표시 한 다음 줄의 중간 부분 만 잘라내어 문자의 윗부분 만 남겨 둡니다. 하프 라인 위의 내용을 삭제하면 다른 라인들은 나누기 아래에서 위로 당깁니다. 내용이 그대로 있고, 내가 의미하는 바를 이해하면, 그냥 보이지 않게됩니다. 보기에서 페이징을 활성화하면 사라집니다. 그렇게하면 줄이 잘리지 않지만 UITextView는 스크롤 막대에 더 많은 내용이 있음을 나타내지 만 일부 지점 이후에는 내용을 표시하지 않게됩니다.

내용이 설정 될 때 UITextView가 포함 된보기가 보이지 않아 차이가 발생합니다. 별도의 뷰 컨트롤러가 NSMutableDictionary 및 NSMutableArray를 생성하고이를 위임자에게 보냅니다.이 대리자는 UITextField를 표시하고 detailIsotopes : withOrder : 메서드가있는 뷰로 보냅니다. 두 버튼은 정보 버튼으로 바꿀 수 있습니다.

이러한 일이 발생하는 이유를 이해하는 사람이 있습니까? 조언 해 주셔서 감사합니다.

답변

1

우선 NSMutableString을 할당하고 해제해야한다고 생각하지 않습니다. [NSMutableString string]을 사용하여 초기화하면 수정이 가능하고 명시 적으로 해제 할 필요가없는 빈 문자열이 만들어집니다.

두 번째 것은, 당신은 왜 대신 인로를 사용하는 stringWithFormat (%d와 수정)에 대한 자신의 integerValue 방법을 사용합니까, 당신의 NSDictionnary에서 NSStrings에 저장 대중에게 보이지? (NSStrings에 대한 stringWithFormat 수식어는 %@입니다.)

또한 UITextView에 대해 이야기하고 나서 UITextField에 관해서는 어딘가에서 실수를하지 않았습니까? 당신의 포맷 된 NSString에 대한 수신 객체가 UITextView가되어야한다고 생각합니다 (textField와 textView가 모두있는 경우).

이 문제가 아니라면 detailIsotopes을 너무 일찍 부르고 텍스트 뷰를 작성한 것일 수 있습니다. NSLog에 주소를 입력하고 처음으로 nil인지 확인하십시오. 인터페이스 빌더를 사용하고 UITextField가 ib 콘센트 인 경우가 있습니다. 그렇다면 사전 및 배열을 viewController에 저장하고 viewController의 viewDidLoad 메서드에서 textField를 설정할 수 있습니다. 보기를 표시 한 후에 detailIsotopes으로 전화하면 나에게 달린 것 같습니다.

잘린 텍스트에 대해서는 UITextView가 자동으로 크기가 조정되지 않기 때문에 원래 크기로 유지할 수 있다고 생각합니다. 일반적으로 다음과 같습니다.

CGRect frame = textView.frame; 
frame.size.height = textView.contentSize; // you can adjust this to leave some space at the end 
textView.frame = frame; 

이렇게하면 textView 높이가 내용 (텍스트) 높이로 설정됩니다. textView가 전체 텍스트를 표시하도록되어있는 경우 scrollingEnabled 속성을 FALSE으로 설정하면 스크롤이 허용되지 않습니다.

희망이 있습니다.

+0

감사합니다. 텍스트 뷰의 값을 설정하려고 시도했지만 여전히 텍스트가 아니 었습니다. 잘린 문제에 관해서는 일단 textview 코드를 수정하면 사라진 것 같습니다. 감사합니다 :) –

관련 문제