【问题标题】:Swift, Pass the array in uiPopoverControllerSwift,在 uiPopoverController 中传递数组
【发布时间】:2015-06-03 04:28:53
【问题描述】:

我想在我的 popovercontroller 中传递数组并对表视图控制器进行排序,对其进行排序并将其返回给主控制器。

我的 popovercontroller 代码

protocol MyProtocol
{
   func refreshPageController(sortedProperties:[Property])
}
 class SortingPopoverController: UIViewController
{

 @IBOutlet var propertyNameView: UIView!

  @IBOutlet var addressNameView: UIView!
  @IBOutlet var imgSortingPropertyName: UIImageView!

 @IBOutlet var propNameSrtImage: UIImageView!
 @IBOutlet var addressSrtImage: UIImageView!

 @IBOutlet var imgTickPropertyName: UIImageView!

 @IBOutlet var imgTickAddress: UIImageView!

    var properties:[Property] = [Property]()

    var utility = Utility()
    var srtProperties : [Property] = []
 var mDelegate: MyProtocol?



 override func viewDidLoad()
    {
      super.viewDidLoad()
      println(properties.count)
      let propertyNameSorting = UITapGestureRecognizer(target: self, action: "propertyNameSorting:")
      self.propertyNameView.addGestureRecognizer(propertyNameSorting)

        let addressSorting = UITapGestureRecognizer(target: self, action: "addressSorting:")
      self.addressNameView.addGestureRecognizer(addressSorting)
        imgTickPropertyName.hidden = true
      imgTickAddress.hidden = true

    }


func removeViewColorSelection(uiViewRef: UIView,tickImgShow: UIImageView)
{
    uiViewRef.backgroundColor =  utility.uicolorFromHex(0xF0F0F0)
    uiViewRef.alpha = 0.97
    tickImgShow.hidden = true
}
func addSelectedColorView(uiViewRef: UIView,tickImgShow: UIImageView)
{
    uiViewRef.backgroundColor = UIColor.whiteColor()
    uiViewRef.alpha = 0.97

    tickImgShow.hidden = false
}

func propertyNameSorting(sender:UITapGestureRecognizer)
{
    println("propertyNameSorting")
    if propertyNameSrt == false
    {
       ascSorting == false
       addSelectedColorView(propertyNameView,tickImgShow: imgTickPropertyName)
       propertyNameSrt =  true
       removeViewColorSelection(addressNameView,tickImgShow: imgTickAddress)
       addressSrt =  false
        if ascSorting == false
        {
            ascSorting = true
            propNameSrtImage.image = UIImage(named: "sorting-ascending-22pt")
            properties.sort(sorterForbuildingAsc)
        }
        else
        {
            ascSorting = false
            propNameSrtImage.image = UIImage(named: "sorting-desending-22pt")
            properties.sort(sorterForbuildingDesc)
        }


    }
    else
    {
        if ascSorting == false
        {
            ascSorting = true
            propNameSrtImage.image = UIImage(named: "sorting-ascending-22pt")
            properties.sort(sorterForbuildingAsc)
        }
        else
        {
            ascSorting = false
            propNameSrtImage.image = UIImage(named: "sorting-desending-22pt")
            properties.sort(sorterForbuildingDesc)
        }

    }

    mDelegate?.refreshPageController(properties)

}
func addressSorting(sender:UITapGestureRecognizer)
{
    println("addressSorting")
    if addressSrt == false
    {
        ascSorting = false
        addSelectedColorView(addressNameView,tickImgShow: imgTickAddress)
        propertyNameSrt =  false
        removeViewColorSelection(propertyNameView,tickImgShow: imgTickPropertyName)
        addressSrt =  true
        if ascSorting == false
        {
            ascSorting = true
            addressSrtImage.image = UIImage(named: "sorting-ascending-22pt")
        }
        else
        {
            ascSorting = false
            addressSrtImage.image = UIImage(named: "sorting-desending-22pt")
        }
    }
    else
    {
        if ascSorting == false
        {
            ascSorting = true
            addressSrtImage.image = UIImage(named: "sorting-ascending-22pt")
        }
        else
        {
            ascSorting = false
            addressSrtImage.image = UIImage(named: "sorting-desending-22pt")
        }

    }


 }

从主控制器打开控制器的代码

    var sortingPopView = SortingPopoverController(nibName: "PopView",bundle: nil )

    sortingPopView.properties = properties

    var sortingPopoverController = UIPopoverController(contentViewController: sortingPopView)

    sortingPopoverController.popoverContentSize = CGSize(width: 250, height: 100)


    sortingPopoverController.presentPopoverFromBarButtonItem(sortingBtn, permittedArrowDirections: UIPopoverArrowDirection.Up
       , animated: true)

问题是我无法调用主视图控制器方法对数组进行排序。

【问题讨论】:

    标签: swift uipopovercontroller popover


    【解决方案1】:

    您忘记在 PopoverViewController 上设置委托。

    所以当你在 PopOverController 中调用它时:

    mDelegate?.refreshPageController(properties)
    

    没有任何反应,因为 mDelegatenil

    在创建 PopoverViewController 时,您已经设置了委托:

    var sortingPopoverController = UIPopoverController(contentViewController: sortingPopView)
    sortingPopoverController.mDelegate = self
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-22
      • 1970-01-01
      • 2014-08-06
      • 1970-01-01
      • 2020-05-21
      相关资源
      最近更新 更多