点击 ImageView 后的 SIGABRT
SIGABRT after tapped an ImageView
当我点击屏幕图像视图时,我试图更改生成 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;
})
}
}
我想,这是因为您还没有解包数据,因为数据可能为零。
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()
我运行你的项目。
错别字:"imageTapped" 和 "imageTaped" 不是一回事。关键线索在控制台错误消息中:-[TestBeaconsSwift.ViewController imageTapped:]: unrecognized selector sent to instance 0x7b76bc30
当我点击屏幕图像视图时,我试图更改生成 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;
})
}
}
我想,这是因为您还没有解包数据,因为数据可能为零。
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()
我运行你的项目。
错别字:"imageTapped" 和 "imageTaped" 不是一回事。关键线索在控制台错误消息中:-[TestBeaconsSwift.ViewController imageTapped:]: unrecognized selector sent to instance 0x7b76bc30