0

ボタンから新しいビューへのプッシュ セグエがあり、戻るボタンのタイトルを変更したいと考えています。このコードの問題点を教えてください。

コード スニペットを次に示します。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"settings"]) {
        NSLog(@"prepareForSegue: %@%@", segue.identifier, segue.destinationViewController);

        UIViewController *viewController = [segue destinationViewController];
        viewController.navigationItem.backBarButtonItem.title = @"Back";

        [segue.destinationViewController setTitle:@"WeekView"];
    }
}

setTitle は機能します。前もって感謝します!!

4

3 に答える 3

0

self.navigationItem.backBarButtonItemデフォルトはゼロです。したがって、タイトルを設定しても何も起こりません。これは nil アドレス オブジェクトに影響を与えるためです。object-c は nil オブジェクトのメッセージングを許可するため、これはエラーをスローしません。

回答: タイトルを設定するには、独自のボタン オブジェクトを作成する必要があります。initWithTitle またはそれを作成してから、後でタイトルを設定できます

ご参考までに :

newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"Home" style: UIBarButtonItemStyleBordered target: self action: @selector(Home:)];
    self.navigationItem.leftBarButtonItem=newBackButton;
于 2013-11-13T10:29:38.740 に答える
0

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil]];通常はviewDidLoadで行う必要がありますが、別のView Controllerにセグエするときにナビゲーションボタンのタイトルを変更することはお勧めできません。

于 2013-11-13T10:27:16.683 に答える
0

UIViewController のビューはまだ読み込まれていないため、最初にタイトルを設定すると、ビューの読み込みコードが発生し、タイトルがデフォルトに設定されます。目的のView ControllerのviewDidLoadまたはviewWillAppearメソッドで戻るボタンのタイトルを設定してみてください。

ビュー コントローラの title プロパティが設定され、動作します。これは、セグエがすでにビュー コントローラ自体をインスタンス化しているためです。

于 2013-11-13T10:26:15.967 に答える