Apple iOS开发指南上应该有的时候没有问题

Posted

技术标签:

【中文标题】Apple iOS开发指南上应该有的时候没有问题【英文标题】:No problems when there should be on Apple iOS Development Guide 【发布时间】:2017-04-28 10:26:38 【问题描述】:

我今天开始使用 Apple's Official Guide for Swift Development 开始学习 ios 开发。

我已联系Work with View Controllers。在页面结束之前有一个检查点,我应该在模拟器上运行应用程序,当我单击图像视图时,我应该得到SIGABRT 错误,因为我没有显示图像的权限。

不仅我没有收到任何错误消息,而且当我单击图像视图时也没有任何反应。

我检查了所有文件 3 次,以确保我没有遗漏任何内容。我什至创建了一个新项目以确保一切正常,但仍然无法正常工作。

ViewController.swift:

import UIKit

class ViewController: UIViewController, UITextFieldDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate 

//MARK: Properties
@IBOutlet weak var nameTextField: UITextField!
@IBOutlet weak var mealNameLabel: UILabel!
@IBOutlet weak var photoImageView: UIImageView!

override func viewDidLoad() 
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    // Handle the text field's user input through delegate callbacks.
    nameTextField.delegate = self


//MARK: UITextFieldDelegate
func textFieldShouldReturn(_ textField: UITextField) -> Bool 
    // Hide the keyboard.
    textField.resignFirstResponder()

    return true


func textFieldDidEndEditing(_ textField: UITextField) 
    mealNameLabel.text = textField.text


//MARK: UIImagePickerControllerDelegate
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) 
    // Dismiss the picker if the user canceled.
    dismiss(animated: true, completion: nil)


func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) 
    // The info dictionary may contain multiple representations of the image. You want to use the original.
    guard let selectedImage = info[UIImagePickerControllerOriginalImage] as? UIImage else 
        fatalError("Expected a dictionary containing an image, but was provided the following: \(info)")
    

    // Set photoImageView to display the selected image.
    photoImageView.image = selectedImage

    // Dismiss the picker.
    dismiss(animated: true, completion: nil)


//MARK: Actions
@IBAction func selectImageFromPhotoLibrary(_ sender: UITapGestureRecognizer) 
    // Hide the keyboard.
    nameTextField.resignFirstResponder()

    // UIImagePickerController is a view controller that lets a user pick media from their photo library.
    let imagePickerController = UIImagePickerController()

    // Only allow photos to be picked, not taken.
    imagePickerController.sourceType = .photoLibrary

    // Make sure ViewController is notified when the user picks an image.
    imagePickerController.delegate = self
    present(imagePickerController, animated: true, completion: nil)


@IBAction func setDefaultLabelText(_ sender: UIButton) 
    mealNameLabel.text = "Default Text"


主故事板:

你能帮我解决一下吗?

【问题讨论】:

可能是您的点击手势未从您的故事板连接到您的文件。检查@IBAction func selectImageFromPhotoLibrary(_ sender: UITapGestureRecognizer) 左侧显示的圆圈内部是否填充了灰色。希望对您有所帮助! @PallaviSrikhakollu 我查过了。它显示它已连接到点击手势识别器。 那么可能是您的 ImageView 的用户交互或 viewController 的视图已关闭。 【参考方案1】:

当您在未经许可的情况下尝试访问相机胶卷时,应该会出现此错误。

iOS 10 要求您添加说明,说明您想要访问相机胶卷的原因。这需要在 info.plist 文件中添加密钥Privacy - Photo Library Usage Description

如果您没有收到此错误,我猜您已经在我们在旧版本 iOS 上运行的 plist 文件中输入了此信息?或者访问相机胶卷的代码实际上并未触发,您可能需要点击屏幕或按下按钮来启动代码。

【讨论】:

我还没有进入权限。尽管我没有权限并且在 Xcode 上没有任何错误,但什么也没有发生。我在 iOS 10.3 上运行模拟器。应该这样做的代码。我一个一个地跟着指南走。 您有访问照片库的按钮吗?当你按下它时会发生什么?【参考方案2】:

我正在使用我使用 Storyboard 放置在 UIImage 上的 Tap Gesture Recognizer。

为了让它工作,我还必须在情节提要的 UIImage 属性检查器中标记为“用户交互已启用”的块中放置一个复选标记。

【讨论】:

以上是关于Apple iOS开发指南上应该有的时候没有问题的主要内容,如果未能解决你的问题,请参考以下文章

iOS 基础指南 Xcode 没有正确响应

Apple 登录无法在 iOS 14 模拟器上运行

iOS:分发版本是不是应该在我的开发人员设备上运行?

在没有 Apple Developer Program 的情况下在 iOS 上安装应用程序 (Xcode 7)

标签栏 ios6 中的 UISplitViewController

在 ios(Apple)平台上创建 Android 应用程序 [关闭]