如何在Swift 4中通过SwiftyJson和Almofire创建多个按钮?

时间:2018-09-29 03:08:41

标签: ios swift swift4 alamofire swifty-json

这些是我的努力:

.foo { color: red; }
.bar { color: green; }

它不起作用,但是如果我在下面使用这样的数组,它就起作用了! var arrayOfVillains = [“圣诞老人”,“错误”,“超人”,“蝙蝠侠”]

感谢您的提前帮助

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。应该在Json完全加载后运行添加按钮:

var cats = [[String:AnyObject]]()
_ = EZLoadingActivity.show("Loading...", disableUI: true)

    let param: [String: AnyObject] = ["apiKey": "???" as AnyObject]
    _ = Alamofire.request(APIRouters.GetAllCats(param)).responseJSON { (responseData) -> Void in
        if((responseData.result.value) != nil) {

            print(responseData.request!)  // original URL request
            print(responseData.response!) // URL response

            let getJson = JSON(responseData.result.value!)

            if (getJson["status"].stringValue == "200"){

                if let resData = getJson["data"].arrayObject {
                    self.cats = resData as! [[String:AnyObject]]
                }
                if self.cats.count > 0 {
                    self.addButton()
                }

            } else if (getJson["status"].stringValue == "404") {
                _ = SweetAlert().showAlert("Ok", subTitle: "Api Error!", style: AlertStyle.warning)
            } else {
                _ = SweetAlert().showAlert("Error", subTitle: getJson["message"].stringValue, style: AlertStyle.warning)
            }

        }

        _ = EZLoadingActivity.hide()
    }


func addButton(){


    var buttonY: CGFloat = 20  // our Starting Offset, could be 0
    for villain in self.cats {

        let villainButton = UIButton(frame: CGRect(x: 50, y: buttonY, width: 250, height: 30))
        buttonY = buttonY + 50  // we are going to space these UIButtons 50px apart

        villainButton.layer.cornerRadius = 10  // get some fancy pantsy rounding
        villainButton.backgroundColor = UIColor.darkGray
        villainButton.setTitle("Button for Villain: \(villain["pt_name_Fa"] ?? "" as AnyObject))", for: UIControlState.normal) // We are going to use the item name as the Button Title here.
        villainButton.titleLabel?.text = "\(villain)"
        villainButton.addTarget(self,action:#selector(villainButtonPressed),
                                for:.touchUpInside)
        self.view.addSubview(villainButton)  // myView in this case is the view you want these buttons added
    }
}

请注意这部分代码:

if self.cats.count > 0 {
                self.addButton()
            }

感谢您的出席。