2016-06-07 15 views
1

Ich versuche, eine UIButton in der Mitte meiner Navigationsleiste hinzuzufügen.UIButton Selector nicht aufgerufen in der Navigationsleiste

Mein Navigationscontroller wird mit einem Tab-Controller initialisiert. Dann erstelle ich ein UIButton mit einem benutzerdefinierten Bild.

Mein Problem ist, dass der Selektor nie aufgerufen wird, auch wenn ich sehe, dass die Taste wirklich gedrückt ist, da die Bildanimation (beim Drücken der Taste) abgespielt wird.

Hier ist mein Code:

let navigationController = UINavigationController(rootViewController: tabBarController) 

let image = UIImage(named: "logo") 

let but = UIButton(type: .Custom) 
navigationController.navigationBar.addSubview(but) 
but .setImage(image, forState: .Normal) 
but.frame=CGRectMake((self.view.frame.size.width-image!.size.width)/2.0, (navigationController.navigationBar.frame.size.height-image!.size.height)/2.0, image!.size.width, image!.size.height) 

but.addTarget(self, action: #selector(self.initTabView), forControlEvents: .AllEvents) 
but.addTarget(self, action: #selector(self.initTabView), forControlEvents: .TouchDown) 

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
appDelegate.window!.rootViewController = navigationController 

Jeder Hinweis geschätzt wird.

+0

Wo haben Sie die Selektormethode definiert? –

+0

in der gleichen Klasse, wo ich diese Zeilen des Codes – Alx

+0

versuchen, Ziel als 'but.addTarget (self, Aktion: #selector (initTabView), forControlEvents: .TouchUpInside)' und stellen Sie sicher, initTabView-Methode nimmt keinen Parameter –

Antwort

0

Blick auf forControlEvents:

let but = UIButton(type: .Custom) 
but.frame = CGRectMake(0, 0, 100, 40) 
but.backgroundColor = UIColor.redColor() 
but.setTitle("Button", forState: UIControlState.Normal) 
but.addTarget(self, action: #selector(MyTabBarController.initTabView), forControlEvents: UIControlEvents.TouchUpInside) 
self.navigationItem.titleView = but 

Um mehrere Touch auf Ihrer Taste zu verhindern:

// default is false 
but.exclusiveTouch = true 
+0

nichts angezeigt – Alx

+0

Haben Sie diese Zeile entfernt: navigationController.navigationBar.addSubview (aber)? –

+0

ja ich tat. vielleicht ist es wegen meiner Tab-Leiste Controller ... aber ich kann das Problem nicht verstehen :( – Alx

0

// versuchen, wie diese // Klassenname ist, in welcher Klasse initTabView Methode existieren müssen Sie Geben Sie diesen Klassennamen ein

but.addTarget(self, action: #selector(Classname.initTabView), forControlEvents: .TouchUpInside) 
+0

Ich habe das versucht: but.addTarget (myTabBarController, action: #selector (MyTabBarController.initTabVi ew), forControlEvents: .TouchUpInside) und die initTabView-Funktion wall erfolgreich aufgerufen, aber nach 2 Aufrufen stürzt die App ab, und zuvor wurde die initTabView-Funktion im AppDelegate aufgerufen !!! – Alx

+0

deklariere myTabBarController global –

+0

selben Absturz leider! – Alx

Verwandte Themen