后退按钮没有出现在按下的UIViewController上

时间:2011-08-30 18:40:25

标签: objective-c ios cocoa-touch uitableview uiviewcontroller

我有一个UITableViewController。当我点击一个单元格时,我想推送一个新视图。这工作正常,但新视图没有后退按钮。这是为什么?

TableViewCode:

if([[NSUserDefaults standardUserDefaults] boolForKey:@"isLoggedIn"])
{
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    ProfileViewController* profileViewController = [[ProfileViewController alloc] initWithNibName:@"ProfileViewController" bundle:nil];
    profileViewController.message = [NSDictionary dictionaryWithObjectsAndKeys:cell.textLabel.text, @"user_login", @"default", @"message_source", nil];
    switch(indexPath.row) {
        case kUsernameRow:                  
            [self.navigationController pushViewController:profileViewController animated:YES];
            [profileViewController release];
            break;
        case kAboutRow:                 
            break;
        case kTOSRow:                   
            break;
    }
}

3 个答案:

答案 0 :(得分:14)

如果您的表视图控制器是从nib创建的,则其默认标题为@""(注意:不是nil,而是空字符串。)

后退按钮有一个错误,如果导航堆栈上的前一个控制器的标题是空字符串,它就不会显示,因此在表视图控制器中,您需要将标题设置为nil或某个字符串代码,或Interface Builder中的一些字符串(无法将其设置为nil afaik)。

答案 1 :(得分:4)

来自Apple文档:

  

导航栏左侧的条形按钮项允许导航回导航堆栈上的上一个视图控制器。导航控制器更新导航栏的左侧,如下所示:

     

如果新的顶级视图控制器具有自定义左栏按钮项,则显示该项。要指定自定义左栏按钮项,请设置视图控制器导航项的leftBarButtonItem属性。

     

如果顶级视图控制器没有自定义左栏按钮项,但前一个视图控制器的导航项在其backBarButtonItem属性中有一个有效项,则导航栏会显示该项。

     

如果任一视图控制器未指定自定义栏按钮项,则使用默认后退按钮,并将其标题设置为上一个视图控制器的title属性的值 - 即视图控制器在堆栈上降低。 (如果导航堆栈上只有一个视图控制器,则不显示后退按钮。)

答案 2 :(得分:2)

检查导航控制器是否启用了导航栏。单击IB中导航控制器下的导航栏,检查是否取消选中“隐藏”。如果勾选,导航栏将不会显示,因此后退按钮也将不可见。