【问题标题】:Refreshing UInavigationbar with segmented control使用分段控件刷新 UInavigationbar
【发布时间】:2011-10-09 00:11:18
【问题描述】:

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

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];
    }
}

Andy 的帮助将不胜感激。谢谢。

【问题讨论】:

  • 第一个代码块在哪里?是否在UISegmentedControls 目标中?
  • 代码的第一段是在视图中确实加载了。

标签: objective-c ios uiview uinavigationcontroller uisegmentedcontrol


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2021-04-18
    • 2012-12-14
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    相关资源
    最近更新 更多