2016-04-11 17 views
2

Ich bin zu ios APP-Entwicklung neu und auch mit Ziel-c Kodierung. Ich weiß nicht, ob es möglich ist. Lass mich zuerst beschreiben, was ich getan habe und dann werde ich beschreiben, was ich will. Ich habe Screenshot hinzugefügt unten können Sie direkt anzeigen oder lesen Sie zuerst die Beschreibung und dann auf den Screenshot.ios Wie man benutzerdefinierten Steuerpult einstellt, redirect obj-c Code in der kundenspezifischen Ansicht

Also, ich habe ein benutzerdefiniertes Xib erstellt mit der benutzerdefinierten Ansicht angefügt. Ich nannte es als Menu.h und .c

Ich habe vier Schaltflächen dort jeder IBOutlet in dieser benutzerdefinierten Ansicht auch erstellt. Sie werden jetzt zur Laufzeit erstellt. Ich musste einige Eigenschaften für einen Controller im Storyboard unter "Benutzerdefiniert Laufzeitattribute" festlegen. Ich kann diesen Wert in der benutzerdefinierten Ansicht mithilfe der Funktion "watchFromNib" abrufen. Damit kann ich nun einfach auf Eigenschaften dieser Buttons zugreifen und diese ändern. Ich kann auch Aktionen auf diese Tasten mit diesem Code setzen

[btnOutlet addTarget:self action:@selector(btnPressed:) forControlEvents:UIControlEventTouchUpInside]; 

Und in das bekomme ich meine Aktion.

Aber was ich versuche zu tun, die Lage sein, den Controller Redirect-Code zu verwenden wie folgt

 NSString * storyboardName = @"Main"; 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil]; 
    ViewController * vc = [storyboard instantiateViewControllerWithIdentifier:@"ViewController"]; 
    [ViewController presentViewController:vc animated:YES completion:nil]; 

Es arbeitet normalerweise in einem Controller, aber jetzt, wenn ich versuche, dass in benutzerdefinierter Ansicht zu setzen in dieser Tastenaktion zeigt es mir Fehler "keine sichtbare Schnittstelle für 'Menü' erklärte den Selektor ...". Ich habe den Screenshot unten hinzugefügt.

no visible interface for 'Menu' declared the selector

Bitte vorschlagen Was kann ich dieses Problem zu beheben tun? Es macht mich verrückt. :)

+0

'presentViewController' erfüllt hod wird nur für 'UIViewController'-Subklassen deklariert. Es scheint, dass Ihre 'Menu' Klasse nicht von' UIViewController' erbt. – redent84

+0

Welches ist die Superklasse Ihrer benutzerdefinierten Klasse? –

+0

Ja, Sie sind richtig redent84. Es ist UIView Payal Maniyar – tushersuvro

Antwort

0

Es ist besser, Segmente zu verwenden, wenn Sie Storyboards verwenden. In einer in IB von einem View-Controller (Push) an einen anderen View-Controller und rufen performSegue Methode:

[self performSegueWithIdentifier: @"MySegue" sender: self]; 
0

Achten Sie darauf, in einem UIViewController Unterklasse sind.

Aus architektonischer Sicht wie in einer Ansicht Klasse nicht-Code tun, anstatt einen Viewcontroller verwenden (daher die Verfügbarkeit solcher Methoden nur in UIViewController Unterklassen)

In Ihrem Storyboard ein Segue mit einem einzigartigen erstellen Bezeichner wie zum Beispiel "ViewControllerSegue" und rufen Sie dann

[self performSegueWithIdentifier:@"ViewControllerSegue"]; 

und setUp Ihre Viewcontroller in

- (void)prepareForSegue:(UIStoryboardSegue *)segue 
      sender:(id)sender;