访问Swift中不同类别的商店

时间:2016-08-09 20:32:23

标签: ios swift storyboard

我甚至不能100%确定这属于这里,但我需要一些帮助。

基本上,我有3套文件: 具有ViewController的Storyboard Viewcontroller 笔尖>调节器 笔尖>控制器

storyboard tableviewcontroller将其中一个nib作为表格单元格加载,另一个只是添加到主故事板视图顶部的视图。

为了说明我在做什么,这里是代码:

let pickerView = UINib(nibName: "DateTimePickerView", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as! DateTimePickerView

    let testFrame = CGRect(x: 0, y: 0, width: view.frame.size.width, height: 200)

    pickerView.frame = testFrame
    ReserveView.addSubview(pickerView)
    pickerView.translatesAutoresizingMaskIntoConstraints = false

    NSLayoutConstraint(item: pickerView, attribute: .Leading, relatedBy: .Equal, toItem: view, attribute: .LeadingMargin, multiplier: 1.0, constant: 0).active = true

    NSLayoutConstraint(item: pickerView, attribute: .Trailing, relatedBy: .Equal, toItem: view, attribute: .TrailingMargin, multiplier: 1.0, constant: 0).active = true

    NSLayoutConstraint(item: pickerView, attribute: .Bottom, relatedBy: .Equal, toItem: view, attribute: .BottomMargin, multiplier: 1.0, constant: 0.0).active = true

这会将nib添加到显示的视图的底部。我想要完成的是:

在另一个作为表格单元格加载的笔尖中:我想要从视图顶部绘制的pickerView中与按钮,标签等进行交互。

希望这张图片可以帮助澄清我想要做的事情,你可以告诉我为什么这是错误的...因为它不是正确的方式。

最终," pickerView"将出现在按钮单击上,然后在用户选择并确认日期时隐藏。

这是照片: Drawing of what I tried to describe

这是实际项目,因此您可以更好地了解我要做的事情: Actual Project SS

1 个答案:

答案 0 :(得分:0)

根据我的理解,你有一个故事板,用一个tableView和单元格加载一个笔尖,以及一个带有选择器视图的笔尖。

如果您的故事板包含对tableview及其需要更改的内容的引用,则可以将closures与pickerview一起使用。

在您的选择器视图中添加以下内容:

var didChange: ((value: String)->())?

在storyboard类中添加以下代码:

func pickerDidChange(value: String) {
    debugPrint("The picker changed")
}

在您初始化选择器视图的位置,在addSubview

上方添加以下内容
pickerView.didChange = pickerDidChange

现在,在您的pickerDidChange函数中,您将获取所需的数据,并将其应用于tableView中的单元格,您可以参考这些单元格。

在pickerview中,您将在onChange方法中添加以下内容:

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    if let didChange = didChange {
        didChange("something")
    }
}

如果您使用的是UIDatePicker,请返回NSDate代替...我认为更合适。

我希望我能正确理解你的问题,这解决了你的问题。