0

ビュー、テーブルビュー、およびテキストビューを持つアプリケーションを作成しました。ユーザーがボタンログインビューをクリックすると、テーブルビューに移動し、テーブルビューのセルをクリックすると、それらが移動するようにアプリケーションをセットアップしましたテキストビュー。これらすべてに対して単一の xib のみを使用しました。すべて正常に動作します。テーブル ビューに移動すると、UIBarButton には、ビューに戻る (左)、テーブル ビューに戻る (右)、クリア ボタン (右) の 3 つのボタンがあり、テーブル ビューのセルをクリックすると、テキスト ビューに移動し、 3つのボタンはすべてまだあります。私が必要とするのは、テーブルビューが表示されたときにログに戻るボタンが非表示になり、他の2つが表示され、テキストビューにいるときはメインに戻るボタンとログに戻るボタンが表示され、クリアボタンが非表示になることです。これを達成する方法はありますか?? これらは、UIBarButtons の私のコードです。

UIBarButtonItem *clearHistory=[[UIBarButtonItem alloc]initWithTitle:@"Clear History" style:UIBarButtonItemStyleBordered target:self action:@selector(clearTable)];

    UIBarButtonItem *btnBack=[[UIBarButtonItem alloc]initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(goBack)];
    self.navigationItem.leftBarButtonItem=btnBack;

    UIBarButtonItem *btnBacklog=[[UIBarButtonItem alloc]initWithTitle:@"Back to log" style:UIBarButtonItemStyleBordered target:self action:@selector(goBacklog)];

    self.navigationItem.rightBarButtonItems=[NSArray arrayWithObjects:clearHistory,btnBacklog, nil];


- (void)goBack {
    self.tableLogView.hidden = YES;
    self.navigationController.navigationBarHidden=YES;
    self.viewLogToolbar.hidden=NO;
    self.extendedView.hidden = YES;
}

- (void)goBacklog {
    self.tableLogView.hidden = NO;
    self.navigationController.navigationBarHidden=NO;
    self.viewLogToolbar.hidden=YES;
    self.extendedView.hidden = YES;
}

-(void)clearTable
{
    if([tableData count])
    {
    UIAlertView *message= [[UIAlertView alloc] initWithTitle:@"Delete All History" message:@"Are you sure?" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Delete", nil];
        [message show];
    }
    else
    {
        UIAlertView *message= [[UIAlertView alloc] initWithTitle:@"Message" message:@"No History" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [message show];
    }


}
4

2 に答える 2

0

コードを次のように変更します。隠しませんが、まったく同じ機能を実現します。これがあなたが期待しているものであることを願っています。

self.navigationController.navigationBarHidden=YES;
   UIBarButtonItem *clearHistory=[[UIBarButtonItem alloc]initWithTitle:@"Clear" style:UIBarButtonItemStyleBordered target:self action:@selector(clearTable)];
   self.navigationItem.rightBarButtonItem=clearHistory;

   UIBarButtonItem *btnBack=[[UIBarButtonItem alloc]initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(goBack)];
   self.navigationItem.leftBarButtonItem=btnBack;



- (void)goBack {
   self.tableLogView.hidden = YES;
   self.navigationController.navigationBarHidden=YES;
   self.viewLogToolbar.hidden=NO;
   self.extendedView.hidden = YES;

}

- (void)goBacklog {
   self.tableLogView.hidden = NO;
   self.navigationController.navigationBarHidden=NO;
   self.viewLogToolbar.hidden=YES;
   self.extendedView.hidden = YES;

   [self.navigationItem.rightBarButtonItem setTitle:@"Clear" ];
   [self.navigationItem.rightBarButtonItem setAction:@selector(clearTable)];
}

このコードを関数内に配置して、テーブルビューからテキストビューに移動します

[self.navigationItem.rightBarButtonItem setTitle:@"Back to log" ];
[self.navigationItem.rightBarButtonItem setAction:@selector(goBacklog)];

それでも2つの右側のボタンを配列に保持したい場合は、次のように2つのボタンの間で有効化オプションを切り替えるだけです

UIBarButtonItem *ubi= [self.navigationItem.rightBarButtonItems objectAtIndex:0];

ubi.enabled=NO/YES;
于 2013-08-16T09:37:11.783 に答える