2012-11-06 53 views
1

我创建了一个if语句,当表格正在编辑时会隐藏后退按钮。后退按钮不会再出现在iPhone上

但是,当离开编辑模式,我不能让后退按钮重新出现。

- (void)setEditing:(BOOL)editing animated:(BOOL)animated 
    { 
    NSLog(@"Edit"); 
    bool e = [tableView isEditing]; 
    e=!e; 
    [tableView setEditing:e animated:YES]; 
    [super setEditing:e animated:YES]; 

    if (editing) 
    { 
    [self.navigationItem setHidesBackButton:YES animated:NO]; 
     UIBarButtonItem *add = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(pushViewController:animated:)]; 
     self.navigationItem.leftBarButtonItem = add; 
    } 
    else if (editing == false) 
    { 
    self.navigationItem.leftBarButtonItem = self.navigationItem.backBarButtonItem; 
    //[self.navigationItem setHidesBackButton:NO animated:NO]; 
    } 
} 

我已经添加了一个NSLog到else语句,它似乎没有被调用。

编辑:我解决了它,我简单地替换如果(编辑==真)与if(e ==真)它现在可以工作,感谢所有的帮助。

+0

请更改bool变量的值“编辑”,同时点击按钮,我认为你的代码是完美的.. – kb920

+0

请问你更具体吗? –

+0

我的意思是你已经在.h文件中对布尔变量进行编辑了吗? 如此改变yes和no的值,同时点击按钮 – kb920

回答

0

您需要设置编辑== false,或者删除else if并将其替换为else。 您当前正在编辑测试==两次真正

if (editing){ 
    [self.navigationItem setHidesBackButton:YES animated:NO]; 
    UIBarButtonItem *add = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(pushViewController:animated:)]; 
    self.navigationItem.leftBarButtonItem = add; 
}else{ 
    [self.navigationItem setHidesBackButton:NO animated:NO]; 
} 
+0

我打算改变它,它仍然不起作用 –

+0

检查Mathew Vargheses恢复后退的答案 – jussi

0

可以重置leftbar按钮默认后退按钮如下。

self.navigationItem.leftBarButtonItem = self.navigationItem.backBarButtonItem; 

编辑:能否请您试试这个样子?

- (void)setEditing:(BOOL)editing animated:(BOOL)animated 
{ 
    NSLog(@"Edit"); 
    bool e = [tableView isEditing]; 
    e=!e; 
    [tableView setEditing:e animated:YES]; 
    [super setEditing:e animated:YES]; 

    if (editing) 
    { 
     UIBarButtonItem *add = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(pushViewController:animated:)]; 
     self.navigationItem.leftBarButtonItem = add; 
    } 
    else 
    { 
     self.navigationItem.leftBarButtonItem = self.navigationItem.backBarButtonItem; 
    } 
} 

试试这个。很高兴,如果这有助于你。 :)

+0

如果他不纠正他的if-else语句,他会帮助的 – jussi

+0

I已将我的if/else语句更正为(编辑== false),并且仍然没有使用此方法 –

+0

请更新您更正的代码 –

0

编辑: 我只是想在一个项目下面的代码和它的作品如预期,隐藏和重新出现的后退按钮:

- (IBAction)testButton:(id)sender { 
    hide = !hide; 
    [self.navigationItem setHidesBackButton:hide animated:NO]; 
} 

隐藏没有开始。每当我按下testButton后面就会出现或消失。

你是否在backButton被隐藏的时候对navigationController或navigationItem进行了修改?

+0

尝试[self.navigationItem setNeedsDisplay];在你设置隐藏之后:NO。 – pedros

+0

没关系。它没有这个方法。 – pedros

+0

添加一块来回答 – pedros

相关问题