我试图在屏幕上点击一个图像视图时更改生成func viewDidLoad的图像,但在点击屏幕后我在行中获得了一个SIGABRT
class AppDelegate: UIResponder, UIApplicationDelegate {
这是代码
AppDelegate.swift
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
/*application.registerUserNotificationSettings(
UIUserNotificationSettings(
forTypes: [.Alert, .Badge, .Sound], categories: nil))*/
return true
}
func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) {
application.applicationIconBadgeNumber = 0
let alert = UIAlertView()
alert.title = "Alert"
alert.message = notification.alertBody
alert.addButtonWithTitle("Dismiss")
alert.show()
}
}
ViewController.swift
class ViewController: UIViewController {
@IBOutlet var imageview: UIImageView!
@IBAction func localNotification(sender: UIButton) {
let localNotification = UILocalNotification()
localNotification.fireDate = NSDate(timeIntervalSinceNow: 5)
localNotification.alertBody = "Esta es una notificacion"
localNotification.timeZone = NSTimeZone.defaultTimeZone()
localNotification.applicationIconBadgeNumber = UIApplication.sharedApplication().applicationIconBadgeNumber + 1
UIApplication.sharedApplication().scheduleLocalNotification(localNotification)
}
override func viewDidLoad() {
super.viewDidLoad()
let imageUrlString = "http://www.personal.psu.edu/cmr5496/sky_main.jpg";
let url = NSURL(string:imageUrlString);
let data = NSData(contentsOfURL: url!)
imageview.image = UIImage(data: data!);
let singleTap = UITapGestureRecognizer(target:self, action:Selector("imageTapped:"))
singleTap.numberOfTapsRequired = 1;
singleTap.numberOfTouchesRequired = 1;
imageview.addGestureRecognizer(singleTap);
imageview.userInteractionEnabled = true;
}
func transformar(str: String) -> UIImage {
let url = NSURL(string:str);
let data = NSData(contentsOfURL: url!)
let image = UIImage (data:data!);
return image!;
}
func imageTaped(gestureRecognizers: UIGestureRecognizer) {
UIView.animateWithDuration(0.5, animations: {
self.imageview.image = self.transformar("http://www.brandontreb.com/wp-content/uploads/2009/06/screenshot_021.png");
//imageview.alpha = 0.0f;
//imageview.contentMode = UIViewContentModeTop;
})
}
}
答案 0 :(得分:2)
我认为,因为你没有打开数据,因为数据可能是零。
let url = NSURL(string:str)
let data = NSData(contentsOfURL: url!)
imageview.image = UIImage(data: data!)
替换为
if let url = NSURL(string:str) {
if let data = NSData(contentsOfURL: url) {
return UIImage (data:data)
}else{
print("image data invalid")
}
}else{
print("URL invalid")
}
return UIImage()
答案 1 :(得分:1)
我跑了你的项目。
错字:“imageTapped”和“imageTaped”不是一回事。关键线索在控制台错误消息中: - [TestBeaconsSwift.ViewController imageTapped:]:无法识别的选择器发送到实例0x7b76bc30