我需要一个独立于当前呈现视图控制器的自定义视图控制器, 它应该每30秒显示一次,当用户点击弹出窗口时,它应该隐藏或消除。
我一直在寻找但没有任何效果,任何帮助都将受到赞赏。
由于
答案 0 :(得分:0)
在AppDelegate中编写逻辑。它是一个单例类,它的实例在App的整个生命周期中保留在内存中,你可以使用
呈现视图控制器UIApplication.shared.keyWindow?.rootViewController?.present(yourVC, animated: true, completion: nil)
您无需知道当前哪个视图控制器在顶部:)
答案 1 :(得分:0)
它为我工作尝试这个让我知道:
let imageV: UIImageView = UIImageView(frame: CGRectMake(90, 0, 80, 80))
imageV.image = UIImage(named: "stop_record")!
self.message = UIAlertView(title: “Custom view”, message: “Processing…”, delegate: self, cancelButtonTitle:nil)
let v: UIView = UIView(frame: CGRectMake(10, 20, 100, 100))
let tapGestureRecognizer = UITapGestureRecognizer(target:self, action:#selector(SONGS.new(_:)))
tapGestureRecognizer.numberOfTapsRequired = 1
if tapGestureRecognizer.numberOfTapsRequired == 1
{
imageV.userInteractionEnabled = true
imageV.addGestureRecognizer(tapGestureRecognizer)
v.addSubview(imageV)
self.timer.invalidate()
}
self.timer = NSTimer.scheduledTimerWithTimeInterval(180.0, target: self, selector: #selector(SONGS.displayAlert), userInfo: nil, repeats: false)
let label = UILabel(frame: CGRectMake(90, 40, 100, 101))
label.textAlignment = NSTextAlignment.Center
self.message.setValue(v, forKey: "accessoryView")
self.message.tag = 3
self.message.show()
func displayAlert
{
self.message.dismissWithClickedButtonIndex(0,animated: true)
}
答案 2 :(得分:0)
要显示每30秒后弹出一次,您应该使用间隔为30秒的NSTimer。每30秒后调用一个选择器(比如showPopUp)方法,在初始化NSTimer时指定该方法。在这个showPopUp中,您应该显示弹出窗口,您可以使用UIAlertController并在窗口中添加它。
以上所有实现都应该在Appdelegate.m
中完成