1つのUIViewControllerが状況に応じて、presentViewControllerされたりpushViewControllerされたりする場合。たいていは前者の場合はNavigationBarに閉じるボタンを表示する必要があると思います。逆に後者は戻るボタンが自動でつくので閉じるボタンを表示するべきではありません。

以下のようにして判定することで必要な場合だけ閉じるボタンを表示できます。

- (void)setupLeftCloseBarButtonIfNeeded
{
    if (self.navigationController && self.navigationController.viewControllers.count == 1) {
        self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Close" style:UIBarButtonItemStyleBordered target:self action:@selector(didTapCloseBarButton)];
    }
}

これをviewDidLoadなどで呼ぶと良いでしょう。