Swift之根据文字长度循环创建button
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift之根据文字长度循环创建button相关的知识,希望对你有一定的参考价值。
参考技术A 我们经常会循环创建button,很多时候我们需要根据文字的长度来创建不同宽度的button。下面我们开始创建:Swift 3 数组限制
【中文标题】Swift 3 数组限制【英文标题】:Swift 3 Array Restrictions 【发布时间】:2016-12-13 16:12:26 【问题描述】:这是我的代码,现在根据我创建的函数命名了 10 个不同的按钮,并且运行正常。
public func buttonNameSetAndColor()
let buttonNamesAndColor = [button1, button2, button3, button4, button5, button6, button7, button8, button9, button10]
for i in 0...9
var val = NamePicker()
buttonNamesAndColor[i]?.setTitle(val, for: .normal)
buttonNamesAndColor[i]?.sizeToFit()
我现在要做的是让这个函数更复杂一点,我想过另一个 for 循环,但这可能是做事的艰难方式。我想要尝试做的是,如果在 10 个按钮中,如果 3 个或更多具有相同的名称,它将三个中的一个更改为我的其他随机名称之一。
我试图在 for 循环中实现这段代码
// array to find duplicates
var buttonValues = [String]()
buttonValues.insert(val, at: i)
print(buttonValues[i])
但它给出的数组越界错误
例如,假设我有这些名字(a、b、c、d、e、f、g、h)
button1 = a
button2 = a
button3 = a
button4 = b
button5 = b
button6 = c
button7 = c
button8 = b
button9 = f
button10 = e
我想让我的新功能修复 button1-button3 并将其中一个按钮命名为不同的名称,因此只有 2 个具有相同名称的按钮,之后它会修复 button4、button5、button8 并更改其中一个他们的名字也没有给他们一个已经有 2 个按钮的名字。
任何有关我如何完成此任务的 cmets 或建议都会有所帮助。
【问题讨论】:
这是一个奇怪的设计......你为什么要这样做? 这只是一个问题,我想弄清楚如何解决这就是编码的重点是找出解决问题的方法。 @AlexanderMomchliov 哦,相信我,我知道。我的意思是我怀疑这是一个 xy 问题xyproblem.info 这真的不是我的问题很清楚,就像我的问题@AlexanderMomchliov 【参考方案1】:可能有更好的方法(如果有,我会删除这个建议),但是字典 [String,UIButton] 呢?
var dict = [String:UIButton]()
setButtonTitle("a", newButton);
func setButtonTitle(title:String, button:UIButton)
var newTitle = ""
if dict[title] == nil
dict[title] = button
else
newTitle = getNewTitle(button)
dict[newTitle] = button
func getNewTitle(button: UIButton) -> String
// code to find unique title
【讨论】:
我理解您对这段代码的想法,但这不起作用,我需要在一个数组中选择所有按钮名称,然后将它们全部比较以找到相同的并且替换它们直到它符合要求。 有没有办法让这行代码将标题设置为一个数组,以便告诉我新的标题名称数组? “buttonNamesAndColor[i]?.setTitle(NamePicker(), for: .normal)”@dfd 我想我(非常)不清楚你在做什么以及为什么。您可以将 UIButtons 设置在一个数组中,但是 (1) 您可能希望完全通过代码来完成此操作,并且 (2) 您可能最好将它们设置为更大的子视图 - 考虑UIToolbar、UINavigationBar等以上是关于Swift之根据文字长度循环创建button的主要内容,如果未能解决你的问题,请参考以下文章