Почему мой код отображает NSLog, но не изменяет текст метки?

#iphone #objective-c #xcode #label #nslog

#iPhone #objective-c #xcode #метка #nslog

Вопрос:

Почему мой код отображает NSLog, но не изменяет текст метки? Я пытаюсь показать AppDelegate.times, но это не работает.

 -(void)Dothis
{
    //retain
    appDelegate = [[[UIApplication sharedApplication] delegate] retain];

    //display in label
    differenceLabel.text = [[NSString alloc] initWithFormat:@"%.3f", appDelegate.times];

    //display in console
    NSLog(@"Computed time wasrggsdfgd: %@", appDelegate.times);
}
  

Комментарии:

1. Вероятно, ваш формат неверен, т. е. nil . Попробуйте ввести это NSLog() .

2. Экземпляром какого класса является appDelegate.times ?

3. Является times значением с плавающей точкой? Я заметил, что вы используете два разных NSString заполнителя.

4. Подключен ли объект differenceLabel как IBOutlet?

5. NSLog работает нормально и возвращает разницу во времени. но —>[differenceLabel setText:[NSString stringWithFormat:@»% @», AppDelegate.times]];<— метка вообще не изменяется, и ошибок не возникает…

Ответ №1:

Вам нужно сделать это следующим образом :

 [differenceLabel setText:[NSString stringWithFormat:@"%@", appDelegate.times]];
  

Для этого вам действительно не нужно создавать экземпляр с помощью нового объекта NSString самостоятельно… И, более того, тогда вы забыли освободить свой объект NSString…

И, согласно вашему журналу, кажется, что «AppDelegate.times» на самом деле не является значением с плавающей точкой (% f …)

Комментарии:

1. [differenceLabel setText: и differenceLabel.text = оба будут работать.

2. то, что вы говорите, в некотором роде имеет смысл, но только что попробовал код, а метка по-прежнему вообще не меняется: / и ошибок не возникает…

3. @Jonathan Yeh ссылка на него есть в конструкторе интерфейса.

4. Итак, если вы сделаете это, например: [differenceLabel setHidden:YES]; ваша метка должна быть скрыта. если вы сделаете это: [differenceLabel setText:[NSString stringWithFormat:@»BLA BLA BAL»]; должно отображаться ‘БЛА-БЛА-БЛА’ … Если вы успешно пройдете эти тесты, то проблема в другом…

5. @Jonathan к сожалению, моя метка не будет скрывать или показывать текст … есть предложения?

Ответ №2:

Это должно сработать:

вот моя функция, которая задает текст метки, и это выглядит следующим образом

-(пустота) Посмотреть значение
{
appdelegate = (stackoverflowQueriesAppDelegate*)[[Делегирование общего приложения UIApplication]];
lbl.text = [NSString stringWithFormat:@"%.f",appdelegate.f]; 
}

Я присваиваю значение с плавающей запятой в качестве текста моей метки lbl, и вот вид кода, присутствующего в моем файле appdelegate

@interface stackoverflowQueriesAppDelegate : NSObject {

 float f; 
}
@property (неатомный, назначить) с плавающей точкой f;
@property (неатомный, сохранить) IBOutlet UIWindow *window;
@end

и вот просмотр моего файла appdelegate.m

@implementation stackoverflowQueriesAppDelegate 
@synthesize window=_window,f;

- (BOOL)application: (UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
 // Переопределить точку для настройки после запуска приложения.
 f = 225,32;
 myview *obj = [[myview alloc]инициализация];
 [self.window добавляет SUBVIEW:obj.view];
 [self.window сделать ключевым и видимым];
 возвращает YES; 
}

надеюсь, это поможет