gpt4 book ai didi

ios - 单击已加载 subview (UIView) 的 UIViewController 中的按钮

转载 作者:行者123 更新时间:2023-11-30 14:11:18 26 4
gpt4 key购买 nike

我正在尝试将 UIView subview 添加到 UIViewController 中,并且该 UIView 有一个我希望用户能够切换的 UISwitch。根据状态,UITextField 的值将来回切换。这是 subview (InitialView):

import UIKit

class InitialView: UIView {

// All UI elements.
var yourZipCodeSwitch: UISwitch = UISwitch(frame: CGRectMake(UIScreen.mainScreen().bounds.width/2 + 90, UIScreen.mainScreen().bounds.height/2-115, 0, 0))

override func didMoveToSuperview() {
self.backgroundColor = UIColor.whiteColor()

yourZipCodeSwitch.setOn(true, animated: true)
yourZipCodeSwitch.addTarget(ViewController(), action: "yourZipCodeSwitchPressed:", forControlEvents: UIControlEvents.TouchUpInside)
self.addSubview(yourZipCodeSwitch)
}

}

如果我想让它的目标正确指向下面的函数,我应该在哪里设置目标或包含此函数?我尝试过:

  • 在 UIViewController 而不是 UIView 中设置目标
  • 将函数保留在 UIView 中

这是函数:

// Enable/disable "Current Location" feature for Your Location.
func yourZipCodeSwitchPressed(sender: AnyObject) {
if yourZipCodeSwitch.on
{
yourTemp = yourZipCode.text
yourZipCode.text = "Current Location"
yourZipCode.enabled = false
}
else
{
yourZipCode.text = yourTemp
yourZipCode.enabled = true
}
}

这是我将其加载到 UIViewController 中的位置:

// add initial view
var initView : InitialView = InitialView()

// Execute on view load
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.

view.addSubview(initView)
}

非常感谢任何帮助 - 谢谢!

最佳答案

是的,didMoveToSuperView() 放置位置没有多大意义。因此,您正在创建一个随机的、完全未连接的 ViewController 实例,以使编译器满意,但让您的项目感到悲伤。控制代码放在 Controller 中, View 代码放在 View 中。

您需要在您的真实 ViewController中:

override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(initView)
// Note 'self' is the UIViewController here, so we got the scoping right
initView.yourZipCodeSwitch.addTarget(self, action: "yourZipCodeSwitchPressed:", forControlEvents: .ValueChanged)
}

此外,.TouchUpInside 用于UIButton。拨动开关要复杂得多,因此它们的事件也不同。在拨动开关的当前设置上进行内部触摸不能而且应该执行任何操作,而在相反设置上进行内部触摸会触发上面的控制事件。 iOS 会为您完成所有内部点击检测。

关于ios - 单击已加载 subview (UIView) 的 UIViewController 中的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31734143/

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