2013-05-09 5 views
0

В моем ярлыке показано одно поле веб-сервиса. Я хочу отобразить 10 символов моей метки. Мой код не работает.Как установить максимальную длину UILabel?

В didEndElement код:

if ([elementName isEqualToString:@"StationName"]) { 
     StationName.text = retornoSOAP; 
     returnSOAP = nil; 
     tReturn = NO;  
    } 

Этот код working.It отображает поле StationName для StationName ярлыку

Где моя ошибка здесь?

- (void)viewDidUnload { 
     *NSString *temp [email protected]"         "; 

      if ([temp length] > 10) { 
       NSRange range = [temp rangeOfComposedCharacterSequencesForRange:(NSRange){0, 10}]; 
       temp = [temp substringWithRange:range]; 
      } 

      StationName.text= temp; 
    } 
+0

10 Что вы думаете? –

ответ

0

не попробовать, как это не нужно брать диапазон все эти вещи просто использовать этот метод substringToIndex.

- (void)viewDidLoad { // not in viewDidUnload 
    StationName.text=temp; 
    if([StationName.text length]>10){ 
      StationName.text=[StationName.text substringToIndex:10]; 
     } 

} 
+0

Он не работает в моем коде. Если я использую это – Mhmt

+0

@Mehmet Akyel: для этого метода вы можете установить значение для StationName.text = @ "your text"; ... – Balu

+0

@Mehmet Akyel: check мой ответ сейчас. – Balu

1

Наиболее вероятной причиной, почему ваш код не работает, что вы вызываете его в неправильном месте: viewDidUnload является маловероятной кандидатом на нужном месте, потому что это обычно называют слишком поздно, чтобы повлиять на что-либо видимое на экране. Кроме того, вы начинаете свой temp с длинной цепочкой пробелов, поэтому в итоге вы получаете ровно десять пробелов на этикетке.

Укорачивание метку в коде, который устанавливает, он должен работать гораздо лучше:

if ([elementName isEqualToString:@"StationName"]) { 
    *NSString *temp = retornoSOAP; 
    if ([temp length] > 10) { 
     NSRange range = [temp rangeOfComposedCharacterSequencesForRange:(NSRange){0, 10}]; 
     temp = [temp substringWithRange:range]; 
    } 
    StationName.text= temp; 
    returnSOAP = nil; 
    tReturn = NO;  
} 
+0

Когда я использую этот код, моя метка равна пустой после загрузки полей. – Mhmt

+0

@MehmetAkyel Это странно. Вы уверены, что этот код будет выполнен? Проверьте с помощью отладчика или добавьте 'NSLog' перед назначением' temp' 'StationName.text'. – dasblinkenlight

0

Вы делаете это неправильно. Потому что вы хотите написать свой код в viewDidLoad, но теперь вы указали в viewDidUnload. И вы можете получить строку с 10 символами, как это:

- (void)viewDidLoad 
{ 
    if ([temp length] >10) 
    { 
      temp = [temp substringToIndex:10]; 
    } 

    StationName.text= temp; 
} 
Смежные вопросы