2015-02-23 3 views
1

Я пытаюсь изменить, хотя таймер в другом методе, текст метки, которую я создал программным образом в оверлее UIView, который идет на UIImagePickerviewController, но, конечно, когда я пытаюсь изменить текст таким образомИзменить текст ярлыка в наложении на камеру ios UIPickercontroller

labelname.text = @ "TEST";

я получаю ошибку «использование необъявленного идентификатора labelname»

Как я могу относиться к этой конкретной этикетке? Должен ли я создавать новый ярлык каждый раз, когда таймер тикает?

Я попытался объявить его в файле .h, но я предполагаю, что я просто создаю другой ярлык ... любые идеи?

+0

Вы должны объявить 'UILabel' переменной переменной' labelname' и инициализировать ее в методе 'viewDidLoad', чтобы вы могли называть это теперь' self.labelname.text = @ "TEST" '. –

+0

К сожалению, это не помогает :(все равно получить ту же ошибку ... – overkill

ответ

0

Просто Пропустите этикетки В целом к ​​таймеру Функция:

Произнесите Этикетка определяется в ViewDidLoad так:

- (void)viewDidLoad 
{ 
    //Do Something here 
    UILabel * label = [[UILabel alloc] 
    initWithFrame:CGRectMake(xcoordinateLabel, ycoordinateLabel, width, height)]; 
    label.backgroundColor = [UIColor clearColor]; 
    label.textAlignment = UITextAlignmentCenter; 
    label.textColor=[UIColor whiteColor]; 
    label.text = @"TEST"; 
    [self.view addSubview:label]; 
    [self changeLabelText:label]; 
} 

Где ваш changeLabelText определяется как это с некоторой задержкой:

- (void) changeLabelText:(UILabel *)label 
{ 
    //Changing Values after 10s Delay 
    double delayInSeconds = 10.0; 
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 
    (int64_t)(delayInSeconds * NSEC_PER_SEC)); 

    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
    label.text = @"TESTING Change"; 
    }); 
} 

Ваша функция таймера может заменить changeLabelText

+0

Я думал, что это правильный способ сделать это (по крайней мере, при компиляции не было никаких ошибок). Ярлык все еще объявлен в другом метод, но теперь я заменил таймер на это - (void) timerCount: (UILabel *) label {}, но теперь, когда я вызываю таймер через таймер = [NSTimer scheduleTimerWithTimeInterval: 1 target: self selector: @selector (timerCount) userInfo: nil repeatts: YES]; Я получаю сообщение об ошибке, потому что я не передаю метку в качестве параметра. заменяя timerCount на timerCount: label не помогает :( – overkill

+0

Вы можете передать аргумент метки в UserInfo, а затем извлечь его в функции таймера, Пройти следующим образом: NSTimer * t = [NSTimer scheduleTimerWithTimeInterval: 2.0 target: self селектор : @selector (timerCount :) userInfo: label repeat: YES]; и получить как - (void) timerCount: (NSTimer *) Timer { UILabel * label = [Timer userInfo]; – Ducktales

+0

Вы имеете в виду таймер замены - (void) с - (void) timerCount: (NSTimer *) Timer {UILabel * label = [Timer userInfo]? Где закрытие курчавое? Я так потерял: '( – overkill