我已经编写了自己的函数来在键盘出现时向上滚动文本字段.为了通过点击文本字段来关闭键盘,我创建了一个UITapGestureRecognizer
在点击时关注文本字段上的第一响应者.
现在,我还为UITableView
文本字段创建了一个自动完成功能,在文本字段正下方创建一个自动填充,并在用户输入文本时用项目填充它.
但是,当选择自动完成表中的一个条目时,didSelectRowAtIndexPath
不会被调用.相反,似乎轻敲手势识别器正在被调用并且刚刚辞职第一响应者.
我猜是有一些方法可以告诉轻敲手势识别器继续将点击消息传递到下方UITableView
,但我无法弄清楚它是什么.任何帮助将非常感激.
前三个答案可以解决我的问题。很难选择哪一个是最好的。因此,我只选择第一个回答我问题的人。对不起,业余爱好者和iOS爱好者。谢谢您的帮助。我很感激。
ViewController 1具有一个表格视图。
我的问题是,仅当我从视图控制器2单击返回时,才如何重新加载表视图;如果我从视图控制器3单击返回,则不重新加载表视图。
现在,我的后退按钮代码是
@IBAction func backButtonTapped(sender: AnyObject) {
self.dismissViewControllerAnimated(true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
在视图控制器1中。我知道将从视图控制器2或3重新加载表视图。
override func viewDidAppear(animated: Bool) {
loadTable()
}
Run Code Online (Sandbox Code Playgroud)
我试图将loadTable()放在viewDidLoad中,并尝试在视图控制器2中为后退按钮编写以下代码。但是,它不起作用。
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewControllerWithIdentifier("UserHomePageViewController") as! UserHomePageViewController
controller.viewDidLoad()
Run Code Online (Sandbox Code Playgroud)
有什么建议我该怎么办?谢谢您的帮助。
编辑:
我认为这是一种更简单的方法,但是仍然无法如我所愿。我猜这是因为viewDidAppear是在调用reloadTableBool之前执行的。正确?有什么办法可以解决?谢谢。您的帮助将不胜感激。
class 2ViewController
@IBAction func backButtonTapped(sender: AnyObject) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewControllerWithIdentifier("1ViewController") as! 1ViewController
print("viewcontroller2 before call: \(controller.reloadTableBool)")
controller.reloadTableBool = false
print("viewcontroller2 after call: \(controller.reloadTableBool)")
self.dismissViewControllerAnimated(true, completion: nil)
}
class 1ViewController
var reloadTableBool = …
Run Code Online (Sandbox Code Playgroud)