2016-03-22 12 views
0

Ich habe eine TableViewController namens TVC und eine Zelle drin. Wenn ich Zelle anklickte, wird TableViewController eine neue ViewController (VC) in seinen Navigationscontroller schieben. In diesem Fall stelle ich die [self.navigationItem.backBarButtonItem setTitle:@" "] in der viewDidLoad Funktion des TVC ein. Aber in der neuen geschobenen ViewController VC, hat die Zurück-Taste immer noch den "Zurück" -Text. Kann das jemand erklären?self.navigationItem.backBarButtonItem kann nicht eingestellt werden

BTW, der TableViewController TVC wird auch von einem anderen View-Controller VC2 geschoben. Ich setze die gleiche Funktion [self.navigationItem.backBarButtonItem setTitle:@" "] in der viewDidLoad Funktion des VC2 und der zurück Knopftext, der im TVC angezeigt wird, ist richtig versteckt.

+0

Und Wenn Sie den Zurück-Button in der 'viewDidLoad:' Methode von "VC" ausblenden? – Randy

+0

Ich legte das Aussehen der backbuttonItem (setzen Sie die Textfarbe die gleiche wie die Hintergrundleiste und legen Sie die Schriftart als sehr klein) und es funktioniert für alle backbuttonItems. Dies ist eine einfache Möglichkeit, den Backbutton-Text auszublenden. – mmjuns

Antwort

2

Worauf Bimala und Ted hingewiesen haben, sind zwei Möglichkeiten, sich dem Thema zu nähern. Das erste ist ein benutzerdefiniertes BackButtonItem und das zweite ist das einfache BackButton. Aber die Einstellung des Bildschirmtitels auf "" ist möglicherweise nicht immer akzeptabel. Sie können also in der ViewWillDisappear-Methode dasselbe tun.

OBJ C:

-(void) viewWillDisappear:(BOOL)animated{ 
    self.navigationItem.title = @""; 
    [super viewWillDisappear:animated]; 
} 

SWIFT:

override func viewWillDisappear(animated: Bool) { 
    self.title = "" 
    super.viewWillDisappear(true) 
} 

Auch können Sie den Titel zurück in ViewWillAppear

OBJ C eingestellt:

-(void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    self.navigationItem.title = @"your title"; 
} 

SWIFT:

override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(true) 
    self.title = "your title" 
} 
+0

Danke. Das macht Sinn. Ich habe auch einen anderen Weg gefunden, dies zu erreichen, indem ich das BackbuttonItem-Erscheinungsbild festlege. – mmjuns

1

Das liegt daran, dass die Zurück-Schaltfläche den Titel des vorherigen Ansichtscontrollers übernimmt. Wenn keine festgelegt ist, wird standardmäßig zurückgesetzt. So legen Sie den Namen des Tableviewcontroller auf einen leeren String wie folgt:

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.navigationItem.title = "" 
} 
+0

Ja, darüber habe ich auch nachgedacht. Aber wenn ich von der Kindansicht zurück gehe, muss ich noch den Titel der Tabellenansicht zurücksetzen. – mmjuns

0

Sein mein Beispiel:

UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)]; 
[leftView setBackgroundColor:[UIColor clearColor]]; 
UIButton *leftViewButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[leftViewButton setFrame:CGRectMake(0, 0, 30, 30)]; 
[leftView addSubview:leftViewButton]; 

[leftViewButton setImage:[UIImage imageNamed:@"NavigationBarButtonBackDefault"] forState:UIControlStateNormal]; 
[leftViewButton setImage:[UIImage imageNamed:@"NavigationBarButtonBackPressed"] forState:UIControlStateHighlighted]; 

UIBarButtonItem *barButtonItemLeft = [[UIBarButtonItem alloc] initWithCustomView:leftView]; 
self.navigationItem.leftBarButtonItem = barButtonItemLeft; 

von Dokumentation:

Wenn der Titel Ihrer Zurück-Taste ist zu Um in den verfügbaren Platz in der Navigationsleiste zu passen, kann die Navigationsleiste die Zeichenfolge "Zurück" anstelle des ursprünglichen Titels der Schaltfläche ersetzen. Die Navigationsleiste tut dies nur, wenn die Zurück-Schaltfläche vom vorherigen Ansichtscontroller bereitgestellt wird. Wenn der neue Ansichtscontroller der obersten Ebene über ein benutzerdefiniertes Element für die linke Leiste verfügt (ein Objekt in der Eigenschaft leftBarButtonItems oder leftBarButtonItem des Navigationselements), ändert die Navigationsleiste den Namen der Schaltfläche nicht.

0

Wenn Sie nur Back-Taste verstecken wollen, dann versuchen:

self.navigationItem.hidesBackButton = YES; 

oder

self.navigationController.navigationBar.topItem.hidesBackButton = YES; 

Wenn Sie benutzerdefinierte Zurück-Taste verwenden, um festlegen möchten dann:

UIBarButtonItem *barButtonItem = [ [UIBarButtonItem alloc] initWithTitle: @"Custom" 
                    style: UIBarButtonItemStylePlain 
                    target: nil action: nil]; 
self.navigationController.navigationBar.topItem.backBarButtonItem = barButtonItem; 
Verwandte Themen