2

UISegmentedControlのようにプログラムで追加しようとしてtitleViewUINavigationControllerます。しかし、それは現れませんでした。さらに調査したところ、 Appleのドキュメントに従ってが設定されていないtitleView場合、プロパティは無視されることがわかりました。に設定しましたが、セグメント化されたコントロールが表示されません!leftBarButtonItemnilnil

以下は私のコードです。

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.navigationItem.leftBarButtonItem = nil;
    UISegmentedControl *statFilter = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Personnal", @"Department", @"Company", nil]];
    [statFilter setSegmentedControlStyle:UISegmentedControlStyleBar];
    self.navigationItem.titleView = statFilter;
}

私は何をすべきか?ここで何が欠けていますか?

ありがとう。

編集

すべての回答をありがとう。しかし、どれもうまくいかなかったので、詳しく調べてみました。それは私が私のアプリケーションをレイアウトした方法でなければなりません。私はおそらくそれを先に述べるべきだったでしょう。謝罪。

私が作成しているのはストーリーボードアプリです。メインコントローラーはUITabBarControllerです。あるタブをクリックすると、を表示したいUITableViewController。にナビゲーションバーを表示できないので、中にを追加して実装するUITableViewController必要があることがわかりました。これは私のアプリが基本的にどのように見えるかです、UINavigationControllerUITableViewController

ここに画像の説明を入力してください

そのDashboardViewControllerは、クラスから継承するクラスに接続されていますUINavigationController 。多分これは問題が存在するところですか?

小さなテストアプリを作成したばかりなのでUIViewController、を埋め込み、UINavigationController上記の元の質問に投稿したコードをUIViewControllerのViewDidLoad内に記述すると、セグメント化されたコントロールが正常に表示されます。他のViewControllerやNavigationControllerに接続されているものがないため、メインアプリで同じことを行う方法がわかりません。

さらに悪化させたらごめんなさい。不明な点があればコメントしてください。

4

2 に答える 2

1

UISegmentedControll を UIBarButtonItem にする必要があると思います。

更新: このコードは、SegmentedControll を中央に配置します。

- (void)viewDidLoad{
    self.title = nil;
    UISegmentedControl *statFilter = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Personnal", @"Department", @"Company", nil]];
    [statFilter setSegmentedControlStyle:UISegmentedControlStyleBar];

    NSMutableArray *buttonArray     = [[NSMutableArray alloc] init];
    UIBarButtonItem *flexibleSpace  = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
    [buttonArray addObject:flexibleSpace];
    [buttonArray addObject:[[UIBarButtonItem alloc] initWithCustomView:statFilter]];
    [buttonArray addObject:flexibleSpace];

    self.navigationItem.leftBarButtonItems = buttonArray;
    [buttonArray release];
}

これがお役に立てば幸いです!

于 2013-03-04T10:33:00.390 に答える
0

これを使用してください。これが役立つことを願っています

- (void)viewDidLoad
{
    [super viewDidLoad];
    UIView * navview = [[UIView alloc] initWithFrame:CGRectMake(10, 10, 160,80)];
    self.navigationItem.leftBarButtonItem = nil;
    UISegmentedControl *statFilter = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Personnal", @"Department", @"Company", nil]];
    [navview addSubview:statFilter];
    self.navigationItem.titleView = navview;
}
于 2013-03-04T10:35:54.737 に答える