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的主要内容,如果未能解决你的问题,请参考以下文章

Swift 2 - for 循环创建多个 UIButtons

Swift - 特定长度的子数组

数据结构之带头结点的循环双向链表详细图片+文字讲解

Swift - 如何实现默认视图控制器循环

循环创建相同长度字符串的数组

Swift 中的相互非可选引用循环