Mam podstawową klasę kontrolera widoku, która dziedziczy po klasie UIViewController
i odziedziczonej klasie z klasy podstawowej viewcontroller
. Teraz mam stalówkę, której właściciel pliku jest odziedziczoną klasą, ale wszystkie moje akcje i punkty sprzedaży znajdują się w klasie bazowej. Czy jest możliwe nawet połączenie akcji \ outlet w pliku końcówki z klasą podstawową?jak połączyć się z IBOutlet lub IBAction w klasie bazowej
Odpowiedz
będę zasadzie wyjaśnić przez example:
Zdefiniuj klasę bazową (nazwijmy go BaseViewController
) i przypisać go do UITableView
IBOutlet w pliku .h:
// BaseViewController.h
@interface BaseViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITableView *tableView;
@end
zdefiniować dwa dzieci klas (tj FirstChildViewController
i SecondChildViewController
):
// FirstChildViewController.h
@interface FirstChildViewController : BaseViewController
@end
// SecondChildViewController.h
@interface SecondChildViewController : BaseViewController
@end
się, aby mieć albo (lub oba) do childre n klasy używają iboutlet klasy bazowej, po prostu przeciągnij referencing do definicji właściwości w pliku klasy base .h ... i to wszystko!
here to kompletny projekt, który ilustruje to.
hmm .. to chyba nie działa dla skutera –
dwa sposoby, aby to osiągnąć:
1)
zrobić to programowo (to znaczy w kodzie)
Najpierw zadeklarować swoje placówki w klasie bazowej.
a następnie przypisz swoje placówki za pośrednictwem kodu w odziedziczonej klasie.
i
2)
Można także przypisać placówek i działań w pliku XIB. Xcode wie o odziedziczonych punktach sprzedaży i działaniach z klas bazowych.
Jeśli klasa bazowa jest w strukturze Swift, to czasami Xcode 7 nie będzie widzieć gniazdek, nawet jeśli klasa bazowa i jej punkty sprzedaży są publiczne. W tym przypadku, gdy obejście jest następujący:
- w IB ustawienia po użyciu podstawową klasę
- Połączyć wyloty
- w IB ustawienia po użyciu klasy pochodnej
IB wyświetli "!" obok gniazdek, jakby ich brakowało, ale nie wystąpią błędy w czasie wykonywania.
Jeśli ktoś ma lepsze rozwiązanie, daj mi znać!
Czy możesz wyjaśnić nieco bardziej szczegółowo, jak to zrobić? – c0d3Junk13
@ c0d3Junk13: Otwórz scenorys. Pokaż inspektora tożsamości. Wybierz kontrolę. Ustaw swoją klasę na klasę podstawową. Podłącz gniazda.Wybierz tę samą kontrolę i ustaw klasę na klasę pochodną. Zignoruj ostrzeżenia. – phatmann
hmm .. to wydaje się hackish .. jest dozwolone? czy jest to coś, co później pęknie na –
- 1. Co oznacza IB w IBAction, IBOutlet itp.?
- 2. Railsy STI - Zapobiegaj klasie bazowej z instancją
- 3. Drukowanie nazwy klasy pochodnej w klasie bazowej
- 4. Zastrzyk własności własności wtryskowej w klasie bazowej
- 5. @Transactional ignorowane w klasie bazowej CDI Fasoli
- 6. Pole pobierające/ustawiające z drzewem wyrażeń w klasie bazowej
- 7. Rozszerzanie delegata z klasy bazowej
- 8. Jak częściowo wdrożyć umowę w abstrakcyjnej klasie bazowej?
- 9. Zapobiegaj klasie dziedziczącej z nadrzędnej funkcji wirtualnej klasy bazowej
- 10. Jak połączyć się z nethack z Node.js?
- 11. Klucze obce dziedziczenia i złożone - jedna część klucza w klasie bazowej, druga część w klasie pochodnej
- 12. Jak połączyć się z boost.system z cmake
- 13. Przypisywanie do statycznego pola tylko do odczytu w klasie bazowej
- 14. połączyć się z TFS z TortoiseGit lub msysgit?
- 15. Czy mogę alias członka klasy bazowej w klasie pochodnej?
- 16. Deklaracje IBOutlet?
- 17. Dlaczego Ninject nie naprawi zabezpieczonych właściwości w klasie bazowej?
- 18. Automatyczne wywoływanie funkcji @IBAction
- 19. Jak podłączyć IBOutlet z kontrolki UITableViewController bezpośrednio do komórki niestandardowej?
- 20. C# wywodzące się od apicontrollera bazowego - w klasie bazowej obiekt Request jest pusty
- 21. Get tekst przycisku z IBAction - iPhone
- 22. Zastąp właściwości IBOutlet z super klasy?
- 23. Android: jak połączyć się z Kalendarzem Google?
- 24. Połączyć się z SockJS z Java?
- 25. Jak połączyć się z AWS Elasticsearch?
- 26. Jak połączyć się z JMX porywające szybszego
- 27. Doxygen - Jak połączyć się z modułem strona
- 28. Jak połączyć się z cpp-netlib
- 29. VSCode jak połączyć się z WinSCP
Tak. Czy wszystkie twoje pliki znajdują się w tym samym projekcie w Xcode? – wbyoung