#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; }
надеюсь, это поможет