AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / Perguntas / 77123915
Accepted
Kitten's Tech
Kitten's Tech
Asked: 2023-09-18 07:08:37 +0800 CST2023-09-18 07:08:37 +0800 CST 2023-09-18 07:08:37 +0800 CST

Erro fatal: encontrado nulo inesperadamente ao desembrulhar implicitamente um valor opcional

  • 772

Meu problema é que meu programa é compilado sem erros e, sempre que clico em um botão, ele gera o erro "Erro fatal: encontrado nulo inesperadamente ao desembrulhar implicitamente um valor opcional" na linha de código: SubButton1Outlet.isEnabled = true

Estou tentando ativar um botão desativado no editor de storyboard. Certifiquei-me de que o IBOutlet estava conectado ao botão certo no storyboard, mas ainda está gerando o erro.

override func viewDidLoad() {
        super.viewDidLoad()
        CallMemory()
        SubButton1Outlet.isEnabled = true
    }
    
    @IBAction func SubButton1(_ sender: Any) {
        SubNumber = 1;
    }
    @IBOutlet weak var SubButton1Outlet: UIButton!

Aqui está toda a seção de código relacionada ao problema e algumas capturas de tela do Xcode. Projeto GitHub completo: https://github.com/DarkCat736/SubscriptionManager/

Foto do simulador Xcode

Editor de código Xcode

Janela Xcode completa

O que eu esperava:

  • Cargas de programa
  • SubButton1 fica habilitado
  • var SubNumberestá definido para valor1
  • SubButton1 é clicado e outra cena é aberta

O que aconteceu:

  • Cargas de programa
  • SubButton1 fica habilitado
  • SubButton1 é clicado
  • O programa gera erro e para
ios
  • 1 1 respostas
  • 31 Views

1 respostas

  • Voted
  1. Best Answer
    Duncan C
    2023-09-18T07:16:13+08:002023-09-18T07:16:13+08:00

    O Interface Builder configura IBOutlets como "opcionais implicitamente desembrulhados", o que significa que se o link de saída for quebrado, seu código irá travar.

    Seu SubButton1Outleté um opcional implicitamente desembrulhado. (Observe o ponto de exclamação após o tipo.

    Por alguma razão essa saída é nula. Verifique o link no Interface Builder.

    Se aparecer como conectado, você pode estar criando seu controlador de visualização de uma forma que não carrega as visualizações do storyboard. Você terá que nos mostrar como está instanciando e carregando seu controlador de visualização antes que possamos ajudar a diagnosticar isso.

    Editar:

    Eu olhei para o seu projeto.

    Seu storyboard está uma bagunça.

    Ele contém 6 cenas de controlador de visualização diferentes, cada uma das quais é uma instância da mesma classe "ViewController".

    Não faça isso. Defina uma subclasse personalizada diferente de UIViewController para cada controlador de visualização em seu storyboard. Cada um deve ter saídas e ações para os botões e visualizações que aquele controlador de visualização gerencia.

    Seu controlador de visualização raiz possui um botão intitulado "SubButton1" que possui uma sequência modal para sua SuscriptionViewcena, que contém um controlador de visualização que também é da mesma classe ViewController. No entanto, a SuscriptionViewcena não inclui um botão SubButton1Outlet, portanto, nessa instância do seu ViewController, o IBOutlet é nulo. Assim, ao viewDidLoaddisparar, tenta executar a linha

    SubButton1Outlet.isEnabled = true
    

    No entanto, SubButton1Outlet1nessa instância o seu ViewController é nulo, então seu aplicativo trava.

    Novamente, sua cena SuscriptionView deve conter sua própria subclasse personalizada de UIViewController. Vamos chamá-lo SubscriptionViewController. Quando você invoca o modal segue do seu controlador de visualização raiz para sua SuscriptionViewcena, ele invocará um tipo diferente de controlador de visualização, um SubscriptionViewController. O viewDidLoad desse controlador de visualização terá um código exclusivo para esse controlador de visualização e esse viewDidLoadmétodo não tentará definir um SubButton1Outlet1que não existe no arquivo SubscriptionViewController.

    • 0

relate perguntas

  • UITableViewCell com UICollectionView aninhado mostrando dados duplicados

  • Por que a entrada de texto multilinha do IOS não funciona corretamente no diálogo de papel nativo do React?

  • É possível gravar a reprodução de um vídeo sem perder a qualidade do vídeo?

  • Swift locationManager.requestWhenInUseAuthorization() não está solicitando ao usuário

  • obtenha o UIBezierPath da imagem sem área transparente

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    destaque o código em HTML usando <font color="#xxx">

    • 2 respostas
  • Marko Smith

    Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}?

    • 1 respostas
  • Marko Smith

    Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)?

    • 2 respostas
  • Marko Smith

    Por que as compreensões de lista criam uma função internamente?

    • 1 respostas
  • Marko Smith

    Estou tentando fazer o jogo pacman usando apenas o módulo Turtle Random e Math

    • 1 respostas
  • Marko Smith

    java.lang.NoSuchMethodError: 'void org.openqa.selenium.remote.http.ClientConfig.<init>(java.net.URI, java.time.Duration, java.time.Duratio

    • 3 respostas
  • Marko Smith

    Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)?

    • 4 respostas
  • Marko Smith

    Por que o construtor de uma variável global não é chamado em uma biblioteca?

    • 1 respostas
  • Marko Smith

    Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto?

    • 1 respostas
  • Marko Smith

    Somente operações bit a bit para std::byte em C++ 17?

    • 1 respostas
  • Martin Hope
    fbrereto Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}? 2023-12-21 00:31:04 +0800 CST
  • Martin Hope
    比尔盖子 Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)? 2023-12-17 10:02:06 +0800 CST
  • Martin Hope
    Amir reza Riahi Por que as compreensões de lista criam uma função internamente? 2023-11-16 20:53:19 +0800 CST
  • Martin Hope
    Michael A formato fmt %H:%M:%S sem decimais 2023-11-11 01:13:05 +0800 CST
  • Martin Hope
    God I Hate Python std::views::filter do C++20 não filtrando a visualização corretamente 2023-08-27 18:40:35 +0800 CST
  • Martin Hope
    LiDa Cute Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)? 2023-08-24 20:46:59 +0800 CST
  • Martin Hope
    jabaa Por que o construtor de uma variável global não é chamado em uma biblioteca? 2023-08-18 07:15:20 +0800 CST
  • Martin Hope
    Panagiotis Syskakis Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto? 2023-08-17 21:24:06 +0800 CST
  • Martin Hope
    Alex Guteniev Por que os compiladores perdem a vetorização aqui? 2023-08-17 18:58:07 +0800 CST
  • Martin Hope
    wimalopaan Somente operações bit a bit para std::byte em C++ 17? 2023-08-17 17:13:58 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve