2

私のアプリの詳細ビューでは、ナビゲーション コントローラーの [戻る] ボタンの色は、不敬な表現からヒントを得ているようです。詳細ビューへの 1 つのパスを介して、それは青色です。別のものを介して、それは黒です。どちらの場合も、戻るボタンは self.navigationController オブジェクト内に存在しないようです。

詳細ビューは次のとおりです。

アプリの詳細ビュー

この時点でのナビゲーション コントローラーのスナップショットを次に示します。

ここに画像の説明を入力

この特定の要素の色を変更する方法を知っていると確信していますが、どこにあるのかわかりません。アイデア?

VenueTableViewController.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSDictionary *show;

    if( [self.listType isEqualToString:@"showsByRegion"] )
    {
        NSString *venueIndex = [[self.allShows allKeys] objectAtIndex:[indexPath indexAtPosition:0]];
        int index = [indexPath indexAtPosition:1];
        show = [[self.allShows objectForKey:venueIndex] objectAtIndex:index];
    } else {
        int index = [indexPath indexAtPosition:(indexPath.length - 1)];
        show = [self.showsAtVenue objectAtIndex:index];
    }

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone"
                                                         bundle:[NSBundle mainBundle]];

    detailViewController = [storyboard instantiateViewControllerWithIdentifier:@"InfoViewController"];

    detailViewController.showInfo = show;

    // Pass the selected object to the new view controller.
    [self.navigationController pushViewController:detailViewController animated:YES];

}

InfoViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.tableView = [[self.view subviews] objectAtIndex:1];

    [self createInfoViewDictionary];
    [self addTopImage];
    [self setFrameForTableView];
    [self bindLabelsToProperties];

    [self.navigationController.navigationBar setTitleTextAttributes:[SHColors sharedInstance].navBarText];
}
4

6 に答える 6

3

ナビゲーション バーの戻るボタンは、戻るボタンが移動する先のビュー コントローラーに属します。すなわち

A --->B --->C

Cの戻るボタンはBナビゲーション アイテムに属し、Bの戻るボタンはナビゲーション アイテムに属しAます。

これは、以前の View Controller で行ったことを確認する必要があることを意味します。

于 2013-10-15T15:07:13.663 に答える
3

異なる色を取得している場合は、異なるビューコントローラーから取得しており、それらのビューコントローラーの色合いが異なるためです。

次に、使用する色を設定する必要があります。

- (void)viewDidLoad
{
    ....
    self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
    ....
}

すべてのナビゲーションバーに同じ色を使用することを考えている場合は、UIAppearance プロキシを使用して AppDelegate に設定できます (編集: Jordan Montel が言ったように)

于 2013-10-15T15:13:41.330 に答える
2

バック タイトルの色全体を変更する場合は、AppDelegatetintColorのメソッドでナビゲーション バーの を設定できます。didFinishLaunchingWithOptions

[[UINavigationBar appearance] setTintColor:[UIColor blackColor]];

didFinishLaunchingWithOptions方法:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
   [[UINavigationBar appearance] setTintColor:[UIColor blackColor]];
    return YES;
}
于 2013-10-15T15:12:16.423 に答える
1

ナビゲーション コントローラーのナビゲーション バーの を、戻るボタンの色に設定tintColorします。

self.navigationController.navigationBar.tintColor = [UIColor whiteColor];

iOS 6 では、バー全体が白に設定されます。

ナビゲーション バーの一部のスーパービューの色合いを設定すると、設定されていない場合は戻るボタンがそれを継承します。

于 2013-10-15T15:07:01.967 に答える
0

@micantoxが言ったように、戻るボタンは以前のView Controllerから来ています。したがって、現在のコントローラーで表示される戻るボタンにアクセスしたい場合は、表示中のビューコントローラーにアクセスする必要があるため、それを取得する最良の方法は次のとおりです。

self.presentingViewController.navigationItem.backBarButtonItem
于 2013-10-15T15:31:15.903 に答える
0

ビューのtintColorプロパティは、戻るボタンのさまざまな色を設定し、何も設定されていない場合はスーパービューから継承されます。アプリデリゲートでこれを行うことにより、アプリ全体の色合いを設定できます。

window.tintColor = [UIColor purpleColor];

あなたの状況では、バックトレースして各ナビゲーション パスの個々の色がどこから来ているかを確認しtintColor、ナビゲーション バーのプロパティを設定する必要があります。

于 2013-10-15T15:10:31.103 に答える