2016-04-20 7 views
2

Instanziieren Ich arbeite daran, eine einzelne objektive C-Klasse in Swift ziehen. Ich habe meine Bridging-Header funktioniert gut - Xcode schlägt sogar den Namen der Obj-Klasse, wenn ich es eintippe. Ich habe sogar einen Delegaten Protokoll verweisen auf die gleiche Header-Datei von meiner schnellen Datei verwaltet:Kann Obj C-Klasse in Swift trotz Arbeit Bridging Header

BrowserViewController.swift

import UIKit 

class BrowserViewController: UIViewController, BrowserTabViewDelegate { 

    @IBOutlet weak var browserView: UIView! 
    @IBOutlet weak var webViewContainer: UIView! 


    override func viewDidLoad() { 
     super.viewDidLoad() 

     let tabview: BrowserTabView = BrowserTabView(); 
     // Do any additional setup after loading the view. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

} 

Sreen cap of the error: Use of unresolved identifier 'BrowserTabView'. Beachten Sie, dass die BrowserTabViewDelegate keine Probleme hat mit referenzierten . Es kommt aus dem gleichen Objc-Header wie der BrowserTabView. Es schlägt den Klassennamen vor, aber ich kann init nicht darauf zugreifen.

BrowserTabView.h

#import <UIKit/UIKit.h> 
@class BrowserTabView; 

@protocol BrowserTabViewDelegate <NSObject> 

@optional 

-(void)BrowserTabView:(BrowserTabView *)browserTabView didSelectTabAtIndex:(NSUInteger)index; 
-(void)BrowserTabView:(BrowserTabView *)browserTabView willRemoveTabAtIndex:(NSUInteger)index; 
-(void)BrowserTabView:(BrowserTabView *)browserTabView didRemoveTabAtIndex:(NSUInteger)index; 
-(void)BrowserTabView:(BrowserTabView *)browserTabView exchangeTabAtIndex:(NSUInteger)index withTabAtIndex:(NSUInteger)toIndex; 
-(BOOL)BrowserTabView:(BrowserTabView *)tabView shouldChangeTitle: (NSString*)title; 

@end 

@interface BrowserTabView : UIView <UIGestureRecognizerDelegate, UITextFieldDelegate> 

@property (nonatomic, strong) UIImage *backgroundImage; 
@property (nonatomic, readonly) NSUInteger numberOfTabs; 
@property (nonatomic, readonly) NSInteger selectedTabIndex; 

@property (nonatomic, readonly) NSMutableArray *reuseQueue; 
@property (nonatomic, weak) id<BrowserTabViewDelegate> delegate; 

-(id)initwithTabTitles:(NSArray *)titles andDelegate:(id)del; 
-(void)addTabWithTitle:(NSString *)title; 
-(void)setTabTitlesWithArray:(NSArray *)titles; 
-(void)setSelectedTabIndex:(NSInteger)selectedTabIndex animated:(BOOL)animation; 
-(void)removeTabAtIndex:(NSInteger)index animated:(BOOL)animated; 
- (void)handleLongPress:(UILongPressGestureRecognizer *)gr; 
- (void)handlePanGesture:(UIPanGestureRecognizer *)sender; 


@end 

Dies ist das erste Mal, dass ich für diese lange bei einem Thema wie diesem stecken geblieben ... Die meisten der bestehenden Fragen, die ich habe gesehen haben mit dem zu tun schlechte Bridging-Header- aber ich bin ziemlich sicher, dass mir gut ist. Lassen Sie mich wissen, ob ich meine Frage klären kann, und danke im Voraus für jede Hilfe.

WI Sicht-Bridging-header.h

// 
// Use this file to import your target's public headers that you would like to expose to Swift. 
#import "BrowserTabView.h" 
#import "BrowserTab.h" 
+0

Entschuldigung wegen der Verwirrung. Könnten Sie den Überbrückungs-Header posten? –

+0

Fertig, am Ende der Frage – Bengovernment

+0

importiert BrowserTab BrowserTabView? sind sie in irgendeiner Weise verwandt? –

Antwort

1

Solch ein schönes Thema. Das sieht wie ein Fehler aus und wir können es in Swifts Community einloggen. Ändern der Delegierten folgende Art und Weise wird Ihnen helfen:

@protocol BrowserTabViewDelegate <NSObject> 

@optional 

-(void)browserTabView:(BrowserTabView *)browserTabView didSelectTabAtIndex:(NSUInteger)index; 
-(void)browserTabView:(BrowserTabView *)browserTabView willRemoveTabAtIndex:(NSUInteger)index; 
-(void)browserTabView:(BrowserTabView *)browserTabView didRemoveTabAtIndex:(NSUInteger)index; 
-(void)browserTabView:(BrowserTabView *)browserTabView exchangeTabAtIndex:(NSUInteger)index withTabAtIndex:(NSUInteger)toIndex; 
-(BOOL)browserTabView:(BrowserTabView *)tabView shouldChangeTitle: (NSString*)title; 

@end 

Es statt browserTabView verwendet werden soll BrowserTabView in den Methoden Namen.

+0

Ich habe ein Problem protokolliert. Lassen Sie sehen, was sie wiedergeben: https://bugs.swift.org/browse/SR-1279 –

+0

@Bengoverdment Macht es Sinn? Übrigens, das Problem wurde als dupliziert gelöst. Wie ich weiß, ist das erwartetes Verhalten für eine Weile. Ein ähnliches Problem kann mit reinem Swift reproduziert werden. –

+0

Das ist richtig. So ein bizarres Problem. Danke für die Hilfe! – Bengovernment

Verwandte Themen