隐藏UINavigationItem按钮时,UISegmentedControl的对齐方式会发生变化

时间:2011-09-08 07:00:53

标签: iphone alignment uibarbuttonitem uisegmentedcontrol uinavigationitem

导航栏的标题视图中有UISegmentedControl。我还有右键控制按钮()和左栏按钮(编辑),如下图所示..

Department button selected

单击ID段时,我隐藏了两个条形按钮(此处为编辑和加号按钮)。这就像..

ID button selected

我正在使用以下代码隐藏栏按钮项目。

- (void)segmentClicked {
    segment = segmentedControl.selectedSegmentIndex;
    self.navigationItem.leftBarButtonItem = leftBarButton;  //leftBarButton is an instance of UIBarButtonItem
    self.navigationItem.leftBarButtonItem = rightBarButton;  //rightBarButton is an instance of UIBarButtonItem

    if (segment == 0) {
        //Do something for segment 1 click
    }
    else if (segment == 1) {
        //Do something for segment 2 click
    }
    else {
        self.navigationItem.leftBarButtonItem = nil;
        self.navigationItem.rightBarButtonItem = nil;
    }
}

我的问题是,当我从 segment1 (部门)或 segment2 (名称)切换到 segment3 (ID)时,{{ 1}}对齐得到改变。我怎样才能让它稳定下来?

先谢谢

1 个答案:

答案 0 :(得分:1)

条形按钮项目自动对齐.. 如果删除其他项目,分段控件将会移动。 您需要做的是使用“固定空间”条形项来定位分段控件... 而不是使您的leftBarButtonItem为零,将其更改为固定空间项目的大小,以保持分段控件到位。 如果你想在实现之前看看它是如何工作的,只需在xib中放一个工具栏并添加“固定空间”和“灵活空间”项。

编辑:

非常直截了当。只要看看uibarbuttonitem类。创建一个类型为固定空间的系统栏按钮项目对象,并根据需要设置其宽度。并将其设置为左栏按钮:

UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
item.width = 50;
self.navigationItem.leftBarButtonItem = item;
[item release];

编辑2:

另一个建议 - 为细分使用较短的文字。喜欢使用Dept.而不是Department。如果标题视图中的分段控件足够短,则不会受到条形按钮的影响。