0

各タブに Nav Controller がある TabBarController を備えた iPhone アプリがあります。Nav Controller の 1 つが別の Viewcontroller にプッシュされます。そのView Controllerで、戻るボタンを非表示にして、カスタムボタンの1つを配置しようとしています。の中に

- (void)viewDidLoad
{
    [super viewDidLoad];
    self._allUsersParticipantsInTheVideo = [[NSMutableArray alloc] init];
    self._allUsersInvitesInTheVideo = [[NSMutableArray alloc] init];

    for (int i=0; i < [self._curVideoToShow._videoParticipants count]; i++) {
        [self._allUsersParticipantsInTheVideo addObject:[self._curVideoToShow._videoParticipants objectAtIndex:i]];
    }
    for (int i=0; i < [self._curVideoToShow._videoInvitees count]; i++) {
        [self._allUsersInvitesInTheVideo addObject:[self._curVideoToShow._videoInvitees objectAtIndex:i]];
    }

    [self setNavBar];
}

#pragma mark - Set NavBar

-(void)setNavBar{
    self.navigationItem.hidesBackButton = YES;

    UIView *navBarItemview = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
    [navBarItemview setBackgroundColor:[UIColor clearColor]];

    // Set cutsom back button
    //UIImage *backImage = [UIImage imageNamed:@"backButton.png"];
    UIImage *backImage = [UIImage imageNamed:@"LeftArrowBg.png"];
    CGRect frame = CGRectMake(0, 6, backImage.size.width + 4, backImage.size.height);
    UIButton *bttn = [[UIButton alloc] initWithFrame:frame];
    [bttn setBackgroundImage:backImage forState:0];
    [bttn setTag:kBackBttn];
    [bttn setTitle:@"Back" forState:UIControlStateNormal];
    [bttn setTitleEdgeInsets:UIEdgeInsetsMake(4, 5, 0, 0)];
    [bttn.titleLabel setFont:[UIFont fontWithName:@"PTSans-Bold" size:12.0]];
    [bttn setContentMode:UIViewContentModeScaleAspectFit];
    [bttn addTarget:self action:@selector(backButtonPressed) forControlEvents:UIControlEventTouchUpInside];

    [navBarItemview addSubview:bttn];


    UILabel *titleLbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 4, 320, 40)];
    [titleLbl setFont:[UIFont fontWithName:@"PTSans-Bold" size:24.0]];
    [titleLbl setTextColor:[UIColor whiteColor]];
    [titleLbl setTextAlignment:UITextAlignmentCenter];
    [titleLbl setBackgroundColor:[UIColor clearColor]];
    [titleLbl setTag:kTitleLbl];
    [titleLbl setShadowOffset:CGSizeMake(0, 1)];
    [titleLbl setShadowColor:[UIColor blackColor]];
    [titleLbl setText:@"All Participants"];

    [navBarItemview addSubview:titleLbl];
    self.navigationItem.titleView = navBarItemview;
}

ご覧のとおり、私は次のように書いています。

self.navigationItem.hidesBackButton = YES;

しかし、アプリを初めて起動したときは、NavBar の戻るボタンが初めて表示されますが、後でアプリを開くたびに、ボタンはカスタムのままになります。(また、ナビゲートするときは私のカスタムです)誰か?

4

1 に答える 1

0

これで試してみてください..

-(void)viewWillAppear:(BOOL)animated
{
    self.navigationItem.hidesBackButton = YES;
}

また

[self.navigationController.navigationItem setHidesBackButton:YES];

また

self.navigationController.navigationItem.backBarButtonItem = nil;
于 2012-11-01T07:04:13.653 に答える