我已经在listViewCell.swift
和listViewCell.xib
中设计了自定义单元格。我有textfield。当用户输入超过100的数字时,我想显示警报。我在HomeViewController中有TableView。
let alert = UIAlertController(
title: "Error",
message: "Please Insert value less than 100",
preferredStyle: UIAlertControllerStyle.alert
)
alert.addAction(UIAlertAction(
title: "Click",
style: UIAlertActionStyle.default,
handler: nil
))
UIApplication.shared.keyWindow?.rootViewController?.present(alert, animated: true, completion: nil)
然后它给了我Attempt to present <UIAlertController: 0x7f945a5a67d0> on <ProjName.LoginController: 0x7f945a407e70> whose view is not in the window hierarchy!
当我将代码更改为
时let alert = UIAlertController(
title: "Error", message: "Please Insert value less than 100",
preferredStyle: UIAlertControllerStyle.alert
)
alert.addAction(UIAlertAction(
title: "Click",
style: UIAlertActionStyle.default,
handler: nil
))
HomeViewController().present(alert, animated: true, completion: nil)
然后给我unexpectedly found nil while unwrapping an Optional value
指向
override func viewDidLoad() {
super.viewDidLoad()
**tableViewList.delegate = self**
tableViewList.dataSource = self
searchBar.delegate = self
}
如何显示自定义单元格的警报?或者如何在HomeViewController中创建一个通用的警报功能并显示其形成任何Swift文件?
预先感谢
您可以随身携带自定义单元的代表。将您的自定义单元格的委托(例如didEnterInvalidValue
didEnterValidValue
(设置为HomeViewController
。从这些委托实施中,向您的UIAlertController
显示自定义消息。
,或者您可以在self.navigationController?.viewControllers
上迭代以找到顶视图控制器并在该视图控制器的视图上显示UIAlertController
。
最简单的是
步骤1:
从您使用自定义单元格的视图控制器中,为您的文本字段制作一个常见的委托功能,目的是通知您文本长度。您可能需要为此扩展uitextfielddelegate。
或您可以将目标函数分配给您的文本字段(虽然不确定是否有效(
您如何捕获特定的Textfield?
您需要使用Indexpath为每个Textfield分配一个标签,并使用该标签捕获特定的文本字段。
步骤2:
在该功能中,您只能使用
显示您的警报self.present(alert, animated: true, completion: nil)
我会选择委托答案。但是,对于更快的解决方案,在几个项目中,我从AppDelegate的rootviewController(通常是Uinavigation Controller(创建一个单例,以便可以随时获得rootcontroller。使用KeyWindow,它不是很建议,因为KeyWindow并不总是由WORET WOREL WOREL WOREL DIALOG REDEFINE REDEFINE。
控制。另一个项目我创建了一个由rootcontroller初始化的AlertClass单元电通,并且总是从中调用它。