【问题标题】:Present Pop-up UIAlertController from within UITableViewCell Without UITableView在没有 UITableView 的 UITableViewCell 中显示弹出 UIAlertController
【发布时间】:2016-05-13 16:00:53
【问题描述】:

在我的 iOS 应用程序中,我有一个 UIViewController ViewController,它显示了一个部分由 TableView 组成的视图。 UITableViewCells 包含一个 UISegmentControl。当调用 UISegmentControl 的 valueHasChanged 操作时,我想显示一个弹出窗口。这是在操作中调用的代码:

//Check that the text field isn't empty:
    if self.TextField.text == "" {

        self.Status.selectedSegmentIndex = 0
        let viewController = ViewController()
        viewController.alertStatusChangedForEmptyTextField(self)
    }

这是我在 ViewController 类中创建的弹出窗口,用于检查同一 UITableViewCell 中的相邻文本字段是否为空:

//Alert function that handles when toggle is set even though there is no content.
func alertStatusChangedForEmptyTextField(sender: AnyObject) {
    let alert = UIAlertController(title: "Text field has no contents", message: "Please enter a text.", preferredStyle: UIAlertControllerStyle.Alert);
    alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Cancel, handler: nil));
    showViewController(alert, sender: self);
}

我在 ViewController 的 viewDidLoad 函数中弹出一个错误,但源于此函数中的 showViewController 方法调用(我知道是因为我尝试只注释掉最后一行,然后一切正常)。

如何从 UITableViewCell 中调用弹出窗口(ViewController)?很高兴听到涉及完全不同方法的建议(创建自定义 UITableView 子类?在 TableViewCell 类中定义的函数?)

另外,我没有根视图控制器。

【问题讨论】:

  • 请发布错误
  • @SouravSachdeva 在 ViewController 类的 viewDidLoad 中的第一个方法上调用错误(即使我注释掉第一个,第二个也会导致错误等)。控制台上记录的错误是:“致命错误:在展开可选值(lldb)时意外发现 nil”,而我的源代码突出显示错误:“线程 1:EXC_BAD_INSTRUCTION(code=EXC_1386_INVOP,subcode=0x0)”
  • 我认为它与您的任何变量的值有关,您是否初始化了您最初存储文本的变量的值,我认为更好的方法是调试所有变量的值在 viewDidLoad() 并检查哪一个是 nil
  • 最初加载 ViewController 时没有出现该错误。另外,当我注释掉 showViewController() 函数时,这个问题就消失了。我无法更改 ViewController 类,因为包含 UITableViewCells 的 tableview 需要它
  • 问题是您使用 self 作为发送者,self 是您的视图控制器,使用 alertStatusChangedEmptyTextField() 中的发送者变量,即输入 showViewController(alert, sender: sender);

标签: swift uiviewcontroller popup uialertcontroller tableviewcell


【解决方案1】:

检查storyboard的值,很有可能你会发现它为nil;

storyboard.instantiateViewControllerWithIdentifier("PopMenuViewController") as! PopMenuViewController

我正在尝试弄清楚如何从自定义 tableview 单元格元素中呈现弹出窗口。如果你想通了,不如分享方法:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    相关资源
    最近更新 更多