Acabei de criar um aplicativo e comecei a conectar o @ IBOutlet no storyboard. Estou conectando alguns deles a rótulos em uma célula de protótipo UITableViewCell com um estilo básico. Quando o conecto, recebo esse erro no Storyboard:
A saída detailText do TableViewController para o UILabel é inválida. As tomadas não podem ser conectadas ao conteúdo repetido.
Alguém pode me ajudar? Eu configurei da maneira que sempre faço com sucesso, mas desta vez ele me lançou esse erro.
ios
storyboard
Tomblasta
fonte
fonte
Respostas:
Crie uma subclasse de célula de exibição de tabela e defina-a como a classe do protótipo. Adicione as saídas a essa classe e conecte-as. Agora, quando você configura a célula, pode acessar as tomadas.
fonte
Existem dois tipos de células de visualização de tabela fornecidas a você através do storyboard: eles são protótipos dinâmicos e células estáticas
1. Protótipos Dinâmicos
A partir do nome, esse tipo de célula é gerado dinamicamente. Eles são controlados pelo seu código, não pelo storyboard. Com a ajuda do delegado e da fonte de dados da exibição de tabela, você pode especificar o número de células, a altura das células e o protótipo de células programaticamente.
Quando você arrasta uma célula para a visualização da tabela, está declarando um protótipo de células. Você pode criar qualquer quantidade de células com base nesse protótipo e adicioná-las à exibição de tabela por meio do
cellForRow
método, programaticamente. A vantagem disso é que você só precisa definir 1 protótipo em vez de criar cada célula com todas as visualizações adicionadas a você (consulte a célula estática).Portanto, nesse caso, você não pode conectar elementos da interface do usuário no protótipo de célula ao seu controlador de exibição. Você terá apenas um objeto controlador de visualização iniciado, mas poderá ter muitos objetos de célula iniciados e adicionados à sua visualização de tabela. Não faz sentido conectar o protótipo de célula para visualizar o controlador porque você não pode controlar várias células com uma conexão de controlador de visualização. E você receberá um erro se fizer isso.
Para corrigir esse problema, você precisa conectar o rótulo do protótipo a um
UITableViewCell
objeto. AUITableViewCell
também é um protótipo de células e você pode iniciar quantos objetos de célula desejar, e cada um deles será conectado a uma exibição gerada a partir do protótipo de célula da tabela de storyboard.Finalmente, no seu
cellForRow
método, crie a célula personalizada daUITableViewCell
classe e faça coisas divertidas com o rótulo2. Células Estáticas
Por outro lado, as células estáticas são realmente configuradas no storyboard. Você precisa arrastar elementos da interface do usuário para cada célula para criá-los. Você estará controlando números de células, alturas, etc. a partir do storyboard. Nesse caso, você verá uma exibição de tabela exatamente igual ao seu telefone em comparação com o que você criou no storyboard. As células estáticas são usadas com mais frequência na página de configuração, que não muda muito.
Para controlar os elementos da interface do usuário para uma célula estática, você precisará conectá-los diretamente ao seu controlador de exibição e configurá-los.
fonte
+100
Se você estiver usando uma visualização de tabela para exibir Configurações e outras opções (como o aplicativo Configurações interno), poderá definir o Conteúdo da Visualização de tabela como Células estáticas no Inspetor de atributos . Além disso, para fazer isso, você deve incorporar seu Table View em uma instância UITableViewController.
fonte
Ou você não precisa usar o IBOutlet para se referir ao objeto na exibição. Você pode atribuir ao Label no tableViewCell um valor de Tag, por exemplo, defina o Tag como 123 (isso pode ser feito pelo inspetor de atributos). Então você pode acessar o rótulo pressionando
fonte
Comigo eu tenho um
UIViewcontroller
, e nele tenho uma tableview com uma célula personalizada. Mapeio minha saída do UILabelUItableviewcell
paraUIViewController
o erro em seguida.fonte
Como a maioria das pessoas apontou, a subclasse
UITableViewCell
resolve esse problema. Mas o motivo não é permitido porque a célula protótipo ( UITableViewCell ) é definida pela Apple e você não pode adicionar nenhuma de suas próprias saídas.fonte
Às vezes, o Xcode não conseguia controlar a conexão correta da tomada de célula.
De alguma forma, o rótulo / botão da minha célula atual conectou outra célula, apenas as removi e o erro desaparece.
fonte
Clique no simulador, navegue até a janela e ative a moldura dos dispositivos
fonte