通过编程设置UIButton的文本

40

我在xib文件中有大约10个UIButton,希望通过编程的方式设置文本

3个回答

62

下次提问时,您可能需要更加具体。

您可以尝试在界面构建器中为每个按钮分配不同的标签(或者是相同的标签,如果这正是您所需要的),然后使用以下代码:

for (int i = 1 ; i<=10;i++)
{
     UIButton *myButton = (UIButton *)[myView viewWithTag:i];
     [myButton setTitle:@"my text" forState:UIControlStateNormal];
}

1
这正是我正在寻找的...一个问题,myview会是xib文件的实例吗? - user401383
我假设你的 NIB 是为一个 UIViewController 设计的,所以如果这段代码在 UIViewController 代码内部,那么 myView 应该是 view。 - Ron Srebro
更准确地说,myView必须是您的按钮的父视图。 - Vladimir
有人对这个问题有什么想法吗?是更好地这样做,还是从IB中使用一些实例变量和IBOutlets呢? - bjtitus
这真的取决于你想要什么。如果所有按钮都有不同的名称和功能,那么IBOutlets可能是正确的选择。 - Ron Srebro
@bjtitus 更好的方法是使用Outlet Collection,请查看我的答案。 - Jorge Arimany

7

在 Swift 3+ 中:

button.setTitle("Button Title", for: .normal)

否则:
button.setTitle("Button Title", forState: UIControlState.Normal)

2
我认为你可以从你的布局中创建一个按钮集合:
从xib中选择第一个按钮,用右键将其拖到你的代码中: Drag firs button 然后你应该选择“Outlet Collection”作为连接类型并分配一个名称:

select Outlet collection

然后在你的代码中,你有一个来自xib文件的按钮数组:
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *buttons;

接下来,请选择并拖动其他按钮到已创建的集合上,按您希望迭代它们的顺序一个一个地进行: 拖动其他按钮 您可以在连接检查器中悬停在所创建的数组上方,以检查按钮的顺序: 检查按钮顺序 现在设置每个按钮的文本:
for (int i = 0; i<self.buttons.count; i++) {
    UIButton * button = self.buttons[i];
    [button setTitle: [NSString stringWithFormat:@"Button %d",i ] forState:UIControlStateNormal];
}

请注意,UIControlStateNormal 是默认状态,如果没有被覆盖,则会显示所有状态:
一般来说,如果一个属性没有为某个状态指定值,那么默认情况下会使用 UIControlStateNormal 的值。如果 UIControlStateNormal 的值没有被设置,则该属性会默认为系统值。因此,至少应该为正常状态设置值。
希望这能帮到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接