gpt4 book ai didi

ios - 在 viewDidLoad 中调用扩展

转载 作者:行者123 更新时间:2023-11-28 12:35:49 25 4
gpt4 key购买 nike

我创建了一个扩展来删除分段控件的边框。这是名为“UISegmentedControl+removeborders.swift”的扩展:

import UIKit

extension UISegmentedControl {
func removeBorders() {
setBackgroundImage(imageWithColor(backgroundColor!), forState: .Normal, barMetrics: .Default)
setBackgroundImage(imageWithColor(tintColor!), forState: .Selected, barMetrics: .Default)
setDividerImage(imageWithColor(UIColor.clearColor()), forLeftSegmentState: .Normal, rightSegmentState: .Normal, barMetrics: .Default)
}

private func imageWithColor(color: UIColor) -> UIImage {
let rect = CGRectMake(0.0, 0.0, 1.0, 1.0)
UIGraphicsBeginImageContext(rect.size)
let context = UIGraphicsGetCurrentContext()
CGContextSetFillColorWithColor(context, color.CGColor);
CGContextFillRect(context, rect);
let image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image
}
}

Xcode 没有发现该代码中的任何错误,但我很难弄清楚如何调用扩展。这是分段控件所在的 TableView Controller 的代码要点,标题为“AddTaskTableViewController.swift”:

import UIKit

class AddTaskTableViewController: UITableViewController {

override func viewDidLoad() {
super.viewDidLoad()

func segmentedControl.removeBorders()
}
}

我试图用最后一行“func segmentedControl.removeBorders()”调用扩展程序,但我在该行收到两个错误:1) 一行中的连续语句必须用“;”分隔2) 在函数声明的参数列表中预期'('。诚然,我是最糟糕的n00b,这就是为什么我挂断了这个。最后一行代码应该是什么,或者我应该调用以不同的方式扩展?谢谢!!!

注意:我用于扩展的代码来自 Remove UISegmentedControl separators completely. (iphone) 中的第三个响应。如果这能帮助您理解这样一个 n00b 是如何想出这样的东西的。

最佳答案

你的扩展应该放在 any 类之外,如果它还没有的话(看起来它是正确的)。

要在 swift 中调用扩展函数,请确保具有正确的类型,然后只需 .functionName。像这样:

class AddTaskTableViewController: UITableViewController {
@IBOutlet weak var segment: UISegmentedControl!

override func viewDidLoad() {
super.viewDidLoad()

self.segment.removeBorders() //segment is of type UISegmentedControl and then just call the function you created in the extension.
}
}

关于ios - 在 viewDidLoad 中调用扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40964243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com