- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
import UIKit
class PopOverViewController: UIViewController, UIGestureRecognizerDelegate, UIPopoverPresentationControllerDelegate {
@IBOutlet weak var textForPopUp: UILabel!
@IBOutlet weak var imge1: UIImageView!
@IBOutlet weak var imge2: UIImageView!
@IBOutlet weak var imge3: UIImageView!
@IBOutlet weak var imge4: UIImageView!
@IBOutlet weak var imge5: UIImageView!
@IBOutlet weak var yesButton: UIButton!
@IBOutlet weak var noButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
let tapGestureRecognizer = UITapGestureRecognizer(target:self, action:Selector("imageTapped:"))
tapGestureRecognizer.delegate = self
print("Inside POP over View Controller viewDidLoad")
imge1.image = UIImage(named: "like")
imge1.tag = 0
imge1.addGestureRecognizer(tapGestureRecognizer)
imge1.userInteractionEnabled = true
imge2.image = UIImage(named: "like")
imge2.tag = 1
imge2.addGestureRecognizer(tapGestureRecognizer)
imge2.userInteractionEnabled = true
imge3.image = UIImage(named: "like")
imge3.tag = 2
imge3.addGestureRecognizer(tapGestureRecognizer)
imge3.userInteractionEnabled = true
imge4.image = UIImage(named: "like")
imge4.tag = 3
imge4.addGestureRecognizer(tapGestureRecognizer)
imge4.userInteractionEnabled = true
imge5.image = UIImage(named: "like")
imge5.tag = 4
imge5.userInteractionEnabled = true
imge5.addGestureRecognizer(tapGestureRecognizer)
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func imageTapped(sender : UIImageView){
if(sender.tag < 3){
print("Why didn't you like our app?")
}
else {
print("We will be redirecting you shortly")
}
}
func initializeData(buttonTitle1 button1: String? = nil , buttonTitle button2 : String? = nil , titleText title : String? = nil){
if(button1 != nil) {
yesButton.setTitle(button1, forState: .Normal)
}
if(button2 != nil){
noButton.setTitle(button2, forState: .Normal)
}
if(title != nil){
textForPopUp.text = title
}
}
}
错误在行 yesButton.setTitle(button1, forState: .Normal)
意外发现nil是报错。我叫
initializeData()
来自另一个 Controller 。我在 XCode 控制台中看到我所有的 ImageView 和 Button 对象都是零。我认为这是导致错误的原因。我该如何解决?
编辑:这里调用了 initializeData()
func popView(sender : MyOrdersViewController){
let storyBoard : UIStoryboard = UIStoryboard(name : "Main" , bundle: nil)
var popViewController : PopOverViewController = storyBoard.instantiateViewControllerWithIdentifier("popUp") as! PopOverViewController
popViewController.initializeData(buttonTitle1: "Yes", buttonTitle: "No", titleText: "How do you you find our app?")
let popOverMenuViewController = popViewController.popoverPresentationController
popOverMenuViewController?.permittedArrowDirections = .Any
popOverMenuViewController?.delegate = self
popOverMenuViewController?.sourceView = sender.view
presentViewController(popViewController, animated: true, completion: nil)
}
最佳答案
这里的问题是,您已经创建了一个 PopOverViewController
实例,并且在加载 View 之前(当您所有的导出仍然是 nil
时)您正在调用 initializeData(_:)
正在访问您的网点。
你要么必须做一些让 View 首先加载的事情,要么你可以先传递按钮标题并将其加载到 的
.viewWillAppear
/viewDidLoad
PopOverViewController
一定要检查你的 socket 的连接。人们经常忘记连接或更改连接后调整连接。
一个传递标题的小例子:
func popView(sender: MyOrdersViewController){
let storyBoard = UIStoryboard(name : "Main" , bundle: nil)
var controller = storyBoard.instantiateViewControllerWithIdentifier("popUp") as! PopOverViewController
controller.titles = ["title1": "yes", "title2": "no"]
presentViewController(popViewController, animated: true, completion: nil)
}
以及如何设置标题:
class PopOverViewController: UIViewController {
var titles: [String: String] = [:]
override viewWillAppear() {
super.viewWillAppear()
yesButton.setTitle(titles["title1"] ?? "No title", forState: .Normal)
noButton.setTitle(titles["title2"] ?? "No title", forState: .Normal)
}
}
使用 标题["title1"] ??如果
会将按钮的标题设置为 titles["title1"]
为 nil
,则“No title”“No title”
.这是一种安全的方法,因为它不会隐式地展开一个可选的。它相当于:
titles["title1"] != nil ? titles["title1"]! : "No title" }
关于ios - 在展开 UIButton 设置标题的可选值时意外发现 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35520651/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!