Hier übergebe ich meinen bool Wert von Tabellenansicht Zelle zu Tabellensicht Klasse mit Delegaten, aber nicht übergeben kann mir jemand helfen, wie mit einer anderen Methode übergeben oder wenn mich nicht korrigieren, was falsch ist während der Weitergabe und in diesem es zurück kein Wert?Wie Bool-Wert von der Tabellenansicht Zelle Klasse an die Tabellenansicht Klasse in Swift 3 übergeben?
hier der Code für meine Tableview-Klasse ist
class CheckoutViewController: UIViewController,UITableViewDelegate,UITableViewDataSource,checkoutDelegate,UIGestureRecognizerDelegate,boolValidationDelegate {
var radio: Bool?
func boolvalidation(bool: Bool)
{
radio = bool
}
@IBAction func continueButtonAction(_ sender: Any) {
print(radio)
if radio == false {
let radiobutton = SCLAlertView()
_ = radiobutton.showError("Warning", subTitle: "Please select shipping method", closeButtonTitle: "OK")
}
else {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let addtoCartVC = storyboard.instantiateViewController(withIdentifier: "payment") as! PaymentMethodViewController
self.navigationController?.pushViewController(addtoCartVC, animated: true)
}
}
let cell = tableView.dequeueReusableCell(withIdentifier: "shippingmethodcell", for: indexPath) as! MethodTableViewCell
cell.delegate = self
return cell
hier ist meine Tabellenansicht Zellklasse
protocol boolValidationDelegate{
func boolvalidation(bool: Bool)
}
class MethodTableViewCell: UITableViewCell,UITableViewDataSource,UITableViewDelegate {
var radioSelection: Bool?
var boolDelegate: boolValidationDelegate?
func paymentRadioAction(button : KGRadioButton) {
_ = button.center
let centralPoint = button.superview?.convert(button.center, to:self.shippingTableView)
let indexPath = self.shippingTableView.indexPathForRow(at: centralPoint!)
if button.isSelected {
} else{
chekIndex = indexPath
radioSelection = true
self.shippingTableView.reloadData()
}
self.boolDelegate?.boolvalidation(bool: radioSelection!)
print(radioSelection)
}
Zelle. boolDelegate = self In CheckoutViewController – karthikeyan
Nachdem Sie 'boolDelegate' eingestellt haben, sollten Sie, wie die Antworten unten, vorschlagen, dass Sie einen starken Referenzzyklus haben. Sie möchten Ihr Protokoll wirklich zu einem "Klassen" -Protokoll machen (z. B. "Protokoll boolValidationDelegate: class {...}") und dann Ihr 'boolDelegate' zu einer" schwachen "Eigenschaft machen. (Ich würde auch das Protokoll umbenennen, um mit Großbuchstaben zu beginnen (zB 'BoolValidationDelegate'), nur als eine Frage der Einhaltung von Standard-Programmierkonventionen.) – Rob
Geben Sie den Code, wie Sie Delegat in CellForRowAtIndexPath – raki