从 UILabel 或 UITextField 更改 UIButton 的标题

Posted

技术标签:

【中文标题】从 UILabel 或 UITextField 更改 UIButton 的标题【英文标题】:Changing the title of a UIButton from a UILabel or UITextFiled 【发布时间】:2014-07-21 02:24:12 【问题描述】:

我需要知道从 UILabel 或 UITextFiled 更改 UIButton 的标题。例如,如果我在 UITextField 中输入文本并点击显示“输入”或类似内容的按钮,则另一个按钮的标题将更改为文本字段中的文本。另一个示例,如果我在文本字段中输入文本并在一个视图控制器中单击“输入”并单击“下一步”以转到另一个视图控制器,则稍后视图控制器中的按钮将具有文本字段中的文本标题前一个视图控制器。我目前没有代码来显示我所拥有的,因为我发现没有任何东西对我有帮助。任何想法将不胜感激。

【问题讨论】:

[button setTitle:label.text forState:UIControlStateNormal]; 把问题分解成小块。你知道如何处理在文本字段中按“Enter”吗?你知道如何更新按钮的标签吗? 在下一个视图中获取一个 NSString 属性对象并将文本字段值传递给该对象。并将该字符串用作下一个视图的 viewdidload 中的按钮或标签文本。 【参考方案1】:

好吧,这是一个刺:

// --------------------------------------------------------------------
// When user taps on your enter button in your first view controller
// --------------------------------------------------------------------
-(void)enterButtonPressed

    ViewController2 *vc2 = [[ViewController2 alloc] init];

    // set the button title in your second view controller
    [vc2.otherButton setTitle:self.textField.text forState:UIControlStateNormal];

    // show second view controller
    [self.navigationController pushViewController:vc2 animated:YES];

【讨论】:

好的,我有一个名为 done 的方法,一旦调用,两个标签会将其文本更改为文本字段中的文本。我还有另一种方法,一旦调用,就会改变视图。我应该将您提供的方法中的前两行代码放在哪个方法中,还是应该将代码行放在第二个 viewController 的 viewDidLoad 方法中? 当您要显示第二页时,请在将按钮推送到导航堆栈之前设置按钮的标题。所以我想在你的情况下,那将是你“改变观点”的“另一种方法”。这样,您可以更有信心按钮的标题不会在某处意外更改,因为它会在您显示下一个视图控制器之前立即发生。 我把你说的放到改变视图的方法里了,还是不行。该代码是有道理的,但它还没有为我工作。我会继续看看我是否做错了什么。 好吧,也许如果您编辑您的问题并包含代码的相关部分,我们也许可以提供更多帮助。【参考方案2】:

试试这个

-(BOOL)textFieldShouldReturn:(UITextField *)textField

  // get the instance of your button
    if(textField.tag == matchedTag)
     [[button titleLabel] setText:@"xyz"];  // or below call 
     [button setTitle:@"xyz" forState:UIControlStateNormal];
   

【讨论】:

以上是关于从 UILabel 或 UITextField 更改 UIButton 的标题的主要内容,如果未能解决你的问题,请参考以下文章

在顶部添加UILabel作为UITextField的子视图

未在 UICollectionViewCell 中的 UILabel(或 UITextField)中设置文本

创建没有任何约束自动布局的 uitextfield 或任何 uilabel

获取 UITableViewCell 的子视图(UITextField 或 UILabel)——两种方式,一种有效,一种无效——为啥?

以编程方式从 UITextField 接收 UILabel 值

将数据从一个 ViewController 中的 UITextField 传递到另一个 View Controller 中的 UILabel