Storyboard uiviewcontroller, ‘aangepaste klasse’ wordt niet weergegeven in vervolgkeuzelijst

Ik heb een UIViewController die ik heb gemaakt in het storyboard van mijn apps, evenals een aangepaste UIViewController-subklasse die ik aan het project heb toegevoegd (en correct in de compileerfase is voor mijn doel). Wanneer ik echter de eigenschap ‘Aangepaste klasse’ op de view-controller in Storyboard ga instellen, wordt mijn aangepaste klasse niet weergegeven in de lijst.

  • Gecontroleerd of de klas deel uitmaakt van het doel van mijn app, niet van tests’
  • Dubbel gecontroleerd of het correct een subklasse van UIViewController is
  • Gecompileerd programma om er zeker van te zijn dat xcode werkte met de laatste informatie
  • Xcode opnieuw gestart

Waarom wordt mijn klas niet weergegeven in de vervolgkeuzelijst ‘Aangepaste klas’?


Antwoord 1, autoriteit 100%

Twee manieren die ik heb gevonden om het probleem op te lossen, maar het zijn tijdelijke oplossingen:-

  1. Typ gewoon de naam van de weergavecontroller in het tekstveld, of
  2. Sluit het project en heropen het en in de projectinitialisatie wordt het bestand op de lijst geplaatst.

Antwoord 2, autoriteit 98%

Als u nog steeds uw probleem heeft of voor degenen die hetzelfde probleem zouden kunnen hebben:

Zorg ervoor dat u op uw storyboard uw “ViewController” selecteert in plaats van uw “View” (die automatisch wordt geselecteerd wanneer u op de weergave in het storyboard klikt). Het verschil tussen die twee is dat wanneer de viewcontroller is geselecteerd, er een blauwe rechthoek rond je app verschijnt. Om er zeker van te zijn dat u de weergavecontroller selecteert, opent u het documentoverzicht en selecteert u het rechtstreeks in uw storyboard-hiërarchie.




Antwoord 3, autoriteit 30%

Ik zou het volgende proberen:

  1. Controleer of het bestand dat de klasse implementeert deel uitmaakt van de bouwfasen(controleer onder doel> bouwfasen)
  2. Voeg het bestand .mtoe aan bouwfasen(als dat nog niet het geval is).
  3. Herstart Xcode.

Antwoord 4, autoriteit 26%

Je kunt dit oplossen door de XML van je Storyboard te bewerken.

  1. Klik met de rechtermuisknop op uw My.storyboard-item in het Project Navigator-paneel en selecteer het menu Open As->SourceCodekeuze. Zoek uw weergavecontroller-item in de XML en voeg het kenmerk customClass="MyController"toe.

  2. Sla het storyboard op.

  3. Klik nogmaals met de rechtermuisknop op uw My.storyboard-item in het Project Navigator-paneel en selecteer de Open As->Interface Builder – Storyboard menukeuze.

Het aangepaste klasitem bevat nu uw MyControllerklasnaam.


Antwoord 5, autoriteit 13%

Zorg ervoor dat uw klas erft van UIViewController.

@interface ClassName : UIViewController

Antwoord 6, autoriteit 11%

In Xcode 8 hadden een paar van mijn klassen het verkeerde pad (hoofdlettergevoelig) opgegeven voor hun bestandslocaties.

MyProject/MySubdirectory/MyViewController.xib (.m, .h)

vs:

MyProject/MySubdirectory/MyViewController.xib (.m, .h)

Ik weet echt niet hoe het in die staat is terechtgekomen, maar mijn project vertoonde exact hetzelfde gedrag als hierboven (geen verkooppunten/acties weergegeven in IB), en door dat pad te repareren was het probleem opgelost.

Ik heb dit op twee verschillende manieren opgelost. Eén manier was door het .pbxproj-bestand te openen en het hoofdlettergevoelige probleem handmatig op te lossen. De andere manier die werkte, was door op het mappictogram onder het gedeelte Identiteit en type van het tabblad Bestandsinspecteur van het bestand te tikken en het bestand daar opnieuw te selecteren.


Antwoord 7, autoriteit 7%

Klik op een andere weergavecontroller in het storyboard en klik vervolgens op de vervolgkeuzelijst voor aangepaste klassen om te bevestigen dat de nieuwe klasse wordt vermeld, maar selecteer deze niet. Klik terug op de nieuwe weergavecontroller die je hebt gemaakt en je zou deze nu in het vervolgkeuzemenu voor aangepaste klassen moeten zien. vreemd, hè? forceert gewoon een refresh denk ik.


Antwoord 8, autoriteit 7%

Ik had dezelfde problemen als beschreven in dit probleem. Geen van de voorgestelde antwoorden loste het echter voor mij op. Mijn project compileerde OK zonder waarschuwingen of fouten, maar in het .h-bestand waren er geen ‘outlet’-indicatoren om aan te geven dat mijn verkooppunten waren gekoppeld aan storyboard-elementen.

Bovendien herkenden pogingen om nieuwe uitgangen in mijn code te maken, door met de rechtermuisknop te klikken en naar mijn headerbestand te slepen, mijn headerbron niet als een potentieel doelwit voor deze operatie. En bovendien verscheen mijn klasse niet in de vervolgkeuzelijst Custom-Class voor het eigenschappencontrolepaneel van ViewController.

En toch is het project goed gecompileerd.

Bij nader onderzoek bleek dat ik mijn eigen klas op de volgende manier had gedefinieerd…

@interface KJBMainDataViewTrackConMk2<UIScrollViewDelegate> : UIViewController

die blijkbaar goed compileert.

Maar als dit wordt gewijzigd in het volgende, (de protocollen naar het einde verplaatsen)…

@interface KJBMainDataViewTrackConMk2 : UIViewController<UIScrollViewDelegate>

Dan komt alles tot leven. Alle verkooppunten worden ineens aangeduid als ‘verbonden’ met een storyboard-element. En slepen met de rechtermuisknop begint weer te werken, en mijn aangepaste klasse verschijnt in de vervolgkeuzelijst aangepaste klasse in het eigenschappencontrolepaneel voor het storyboard ViewController!

Andere antwoorden hier vertegenwoordigen waarschijnlijk de meest waarschijnlijke oorzaken van deze aandoening, maar ik vond het de moeite waard om in ieder geval deze ene andere mogelijke oorzaak te noemen.


Antwoord 9, autoriteit 7%

Ik had hetzelfde probleem, maar geen van de andere oplossingen werkte voor mij. Het probleem voor mij was dat ik een Mac- en iOS-doelwit had, beide met hun eigen versies van dezelfde weergavecontroller. Ik had bijvoorbeeld een .h/.m-paar bestanden met de naam FooViewController voor Mac en nog een .h/.m-paar bestanden met de naam FooViewController voor iOS. Elk paar was correct opgenomen met hun respectieve doelen, maar om de een of andere reden vindt Xcode het niet leuk en mijn viewcontroller zou niet verschijnen in de vervolgkeuzelijst Custom Class in de viewcontroller in het storyboard. Uiteindelijk heb ik mijn klas hernoemd in de iOS-weergavecontroller en deze verscheen onmiddellijk in de vervolgkeuzelijst.


Antwoord 10, autoriteit 4%

In mijn geval sleep ik een nieuw TableViewController-object naar het storyboard, maar ik voeg een nieuw bestand toe waarvan de subklasse “UIViewController” is… Dan voeg ik een bestand toe waarvan de subklasse “UITableViewController” is, probleem opgelost!!


Antwoord 11, autoriteit 4%

Voor degenen onder jullie die dit probleem nog steeds hebben nadat ze het helemaal hebben geprobeerd, is dat waarschijnlijk omdat je op Viewhebt geklikt in plaats van ViewController.

U moet het bestand kiezen wanneer op ViewControllerwordt geklikt.

Dit heeft mijn probleem opgelost.


Antwoord 12, autoriteit 2%

Ik kwam dit probleem toevallig tegen en had geen geluk nadat ik de vorige suggesties had geprobeerd. Eindelijk ontdekte ik dat de reden is dat het type van het headerbestand is ingesteld op C++ header. Na het wijzigen in C header(zoals alle andere header-bestanden), verschijnt de klasse in de vervolgkeuzelijst. Ik weet echter niet waarom… Mogelijk nuttig voor anderen, dus plaats ik het hier.


Antwoord 13, autoriteit 2%

Storyboard is op zoek naar de aangepaste klasse, maar fysiek is het daar niet en het geeft de naam van de aangepaste klasse niet weer in de lijst en ook de verkooppunten worden niet weergegeven. De volgende oplossing werkte perfect voor mij.

  1. Kopieer je code gewoon ergens anders. (Laten we zeggen op desktop)
  2. Open je bestaande code.
  3. Verwijder het aangepaste klassenbestand. (Ga naar Prullenbak)
  4. Voeg nu bestanden toe van gekopieerde projectmap (van Desktop)
  5. Vergeet niet om het selectievakje “Copy of Need” te controleren
  6. Open het Story Board en Bingo U krijgt uw aangepaste klassenbestanden in DropDown

14

Zorg ervoor dat u aanvankelijk niet de CustomEviewController toevoegt aan elke groep of map. Plaats het in de root van uw app.


15

Geen van het bovenstaande (of hieronder 🙂 heeft me geholpen. Hoewel ik heb gevonden dat

  1. na het toevoegen van nieuwe weergavecontroller aan Storyboard (gewoon door het te slepen)
  2. en het toevoegen van mijn klas per bestand \ New \ File \ Objective-C-klasse, geef het een naam, geen xib, vervolgens

Als ik mijn ViewController in Storyboard selecteer en probeer mijn klasse toe te wijzen – mijn klas is er niet

maar

Als ik op een weergave klik die zich in de weergaveController zelf bevindt, klik dan op een dropdown-menu in Custom Class

en dan

Selecteer ViewController (klik op een balk onder de weergavecontroller) en klik nu weer op een druppel van de klas in aangepaste klasse die mijn nieuw toegevoegde klasse op magische wijze verschijnt.

raar, moet een fout zijn met verfrissend. Xcode versie 5.1 (5B130A)


16

Zorg ervoor dat u de weergavecontroller selecteert waarnaar u uw klas wilt bijvoegen. De eenvoudige manier is open Document Outlineen kies uw weergavecontroller (wanneer u op het formatteert, het storyboard Soms kiest het gewoon niet het object dat u bedoelde).


17

Voor mijn geval zijn bundelbronnen op de een of andere manier verwijderd, dus ik heb eraan toegevoegd en werkte!

Bouw fasen – & GT; Voeg bouwfase toe – & GT; Kopieer bundelbronnen
Zoek uw bestand
Sleep vervolgens uw bestand daar

Controleer vervolgens of uw doellidmaatschap wordt gecontroleerd.


18

In mijn geval heb ik de verkeerde UI geselecteerd .. Dus ik heb het klassenbestand verwijderd en een nieuwe gemaakt en de juiste ouderklasse

hebt geselecteerd


19

Ik moest Xcode 7.3 (7D175)

opnieuw opstarten


20

Wat voor mij werkte, klik dan op het bestand in de projectnavigator en vervolgens in de bestandsinspecteur onder “Identiteit en type” onder de vervolgkeuzelijst “Locatie” klik op het pictogram Little Map en selecteer vervolgens het bestand in het pop-upvenster.


21

Probeer uw project schoon te maken en start uw Mac ook opnieuw op. Een eigenaardig ding dat ik deed was alle namen van de aangepaste klassen veranderen en het project opnieuw bouwen. Het werkte!


22

Ik was redelijk gefrustreerd met dit probleem omdat geen van de bovenstaande antwoorden mijn probleem had opgelost.

In mijn geval: ik zat in het midden van het werken aan het Swift View Controller-bestand en maakte actieve wijzigingen (zoals het maken van een celklasse van een aangepaste collectie). Ik had het codeblok niet afgemaakt en daaruit geopend, zoals SO:

class tableViewCell: UITableViewCell { 
}
class collectionCell: 
class viewController: UIViewController {
     override func viewDidLoad(){
     super.viewDidload()
     }
}

Noteer het onvolledige codeblok ‘Collectioncell2’
Dit was genoeg voor Xcode om mijn ViewController-bestand als zodanig niet te herkennen.
Zodra ik dit blok heb voltooid, verschijnde het bestand als optie in mijn Xcode.

Zeer gek en eenvoudig.


23

Controleer of de weergavecontroller overeenkomt met hetzelfde type in het storyboard.


24

In mijn geval Swift-bestandsnaam was anders dan Swift Class Name I.E

Bestandsnaam was ViewControlTrollertest.Swift
en klasnaam was ViewControler.swift

Na het wijzigen van zowel de algemene naam opgelost mijn probleem

Start Xcode opnieuw na bovenstaande wijzigingen


25

Zorg ervoor dat de klassenaam van de ViewControllerde gewenste naam is. d.w.z.

class MyCustomNameViewController: UIViewController {
.
.
} 

Alleen de bestandsnaam wijzigen is niet genoeg.

Other episodes