【问题标题】:Change text of label in ios camera overlay UIPickercontroller更改 ios 相机覆盖 UIPickercontroller 中的标签文本
【发布时间】:2015-02-23 15:55:22
【问题描述】:

我正在尝试通过不同方法的计时器更改我在 UIImagePickerviewController 上的 UIView 叠加层中以编程方式创建的标签文本,但当然当我尝试以这种方式更改文本时

labelname.text = @"TEST";

我收到错误“使用未声明的标识符labelname

如何引用该特定标签?每次计时器滴答时我都应该创建一个新标签吗?

我试图在 .h 文件中声明它,但我猜我只是在创建一个不同的标签...有什么想法吗?

【问题讨论】:

  • 您需要声明一个UILabel 类变量labelname 并在viewDidLoad 方法中对其进行初始化,以便您现在可以调用它self.labelname.text=@"TEST"
  • 不幸的是,这没有帮助:(仍然得到同样的错误......

标签: ios objective-c xcode uilabel uipickerviewcontroller


【解决方案1】:

只需将标签作为一个整体传递给定时器函数:

说你的标签在 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";
    });
}

你的 Timer 函数可以代替 changeLabelText

【讨论】:

  • 我认为这是正确的做法(至少在编译时它没有给出任何错误)。标签仍然以不同的方法声明,但现在我用这个 -(void)timerCount:(UILabel *)label{} 替换了计时器,但现在当我通过 timer = [NSTimer scheduledTimerWithTimeInterval:1 目标调用计时器时:自我选择器:@selector(timerCount) userInfo: nil repeats:YES];我收到一个错误,因为我没有将标签作为参数传递。用 timerCount:label 替换 timerCount 没有帮助:(
  • 你可以在 UserInfo 中传递 label 参数,然后在 Timer 函数中检索它,像这样传递 NSTimer *t = [NSTimer scheduledTimerWithTimeInterval: 2.0 target: self selector:@selector(timerCount:) userInfo :标签重复:是];并检索 - (void) timerCount:(NSTimer *) Timer { UILabel * label = [Timer userInfo];
  • 您的意思是将 -(void)timer 替换为 - (void) timerCount:(NSTimer *) Timer { UILabel * label = [Timer userInfo] ?结束卷曲在哪里?我很迷茫:'(
  • 是 - (void) timerCount:(NSTimer *) Timer { UILabel * label = [Timer userInfo]; //用标签做你想做的事 }
  • 天哪,它有效!!!我仍然不知道如何,但我已经谢谢你了!你能解释一下那里发生了什么吗?我知道我们正在调用该方法并传递一个参数,但我没有遵循的是我们声明另一个计时器 Timer -> -(void) timerCount:(NSTimer *) Timer 的方法
猜你喜欢
  • 2014-06-27
  • 1970-01-01
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
  • 2012-05-24
  • 1970-01-01
  • 2016-04-04
  • 2021-05-20
相关资源
最近更新 更多