使用分段控件刷新UInavigationbar

时间:2011-10-09 00:11:18

标签: objective-c ios uiview uinavigationcontroller uisegmentedcontrol

我有一个使用分段控件更改的登录/注册页面。登录页面是通用的,self.title = @“login”,bar项=登录以发送登录请求。但是,当用户选择了注册分段控件时,我想刷新导航栏以显示self.title = @“注册”,栏按钮=注册以发送注册请求。我在分段控件中使用了这段代码:

if (segmentedControl.selectedSegmentIndex == 0) 
    {
        UIBarButtonItem * sortButton = [[UIBarButtonItem alloc] initWithTitle:@"Login" style:UIBarButtonItemStyleBordered target:self action:@selector(LoginButton)];

        self.navigationItem.rightBarButtonItem = sortButton;
        [sortButton release];

        self.title = @"Login";
    }
    else if (segmentedControl.selectedSegmentIndex == 1)
    {
        UIBarButtonItem * sortButton = [[UIBarButtonItem alloc] initWithTitle:@"Submit" style:UIBarButtonItemStyleBordered target:self action:@selector(Submit)];

        self.navigationItem.rightBarButtonItem = sortButton;
        [sortButton release];

        self.title = @"Submit";

    }

我也有分段控件设置和工作:

- (IBAction)segmentSwitch:(id)sender 
{
    UISegmentedControl *segmentedControl = (UISegmentedControl *) sender;
    NSInteger selectedSegment = segmentedControl.selectedSegmentIndex;

    if (selectedSegment == 0) 
    {
        //toggle the correct view to be visible
        [firstView setHidden:NO];
        [secondView setHidden:YES];
    }
    else
    {
        //toggle the correct view to be visible
        [firstView setHidden:YES];
        [secondView setHidden:NO];
    }
}

安迪帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:1)

假设第一个代码块位于viewDidLoad方法中,您需要更改UIViewController,以便在UISegmentedControl的值时更改标题和按钮变化。换句话说,尝试将第一个代码块移动到segmentSwitch:方法。

您的代码无效的原因是因为viewDidLoad只被调用一次,因此第一个代码块只执行一次,而您希望每次用户选择一个新段时执行它。