1

私はUITabBarControllerベースのiPhoneアプリで働いています。私のアプリは5回タップしています。私の4番目のタップでは、子が1つあるUIViewControllerをタップしUIViewControllerます。私の最初RootViewControllerの画面タイトルは「すべてのメッセージ」です。私の2番目のUIViewController名は「Conversations」です。

画面の流れはタップ4->すべてのメッセージ->会話です

すべてのメッセージに含まれUITableViewているため、ユーザーがテーブルビューからメッセージをクリックすると、ユーザーは会話画面(UIViewController)に移動します。この画面には、特定のユーザーのメッセージが表示されます。

この子UIViewControllerから、親viewControllerのタイトル名を「AllMessages」から「NewMessages(1)」に更新する必要があります。また、戻るボタンの名前を「AllMessages」から「NewMessages(1)」に変更する必要があります。

以下のコードに従って、画面のタイトルを更新しました。このコードは、会話画面という名前の子ビューコントローラーにあります。

AllMessagesViewController *mesViewController = [[AllMessagesViewController alloc] init];
mesViewController.navigationItem.title = @"New Messages(1)";

誰かが間違っているところを助けてくれませんか?このアプローチは正しいですか?これをするのを手伝ってください。前もって感謝します。

4

2 に答える 2

1

を使用してみてくださいNSNotificationCenter

メソッドAllMessagesViewControllerを宣言する場合:

- (void)changeTitle:(NSString *)newTitle;

次に、通知イベント用にViewControllerを登録します

[[NSNotificationCenter defaultCenter] addObserver:self 
                             selector:@selector(changeTitle:) 
                                name:@"ChangeTitleEvent" object:nil];

ConversationViewController次に、通知の送信からタイトルを変更する場合:

[[NSNotificationCenter defaultCenter] postNotificationName:@"ChangeTitleEvent"
                                               object:@"New Message (1)"];

changeTitle:このメソッドはメソッドを呼び出すAllMessagesViewControllerので、パラメータを使用してタイトルを変更するだけですnewTitle

- (void)changeTitle:(NSString *)newTitle
{
   self.title = newTitle;
}
于 2012-09-19T12:35:21.060 に答える
1

これを行う:

NSArray *arrControllers = [self.navigationController viewControllers];
if([[arrControllers objectAtIndex:[arrControllers count]-2] isKindOfClass:[AllMessagesViewController class]])
{
  AllMessagesViewController *objAllMessagesViewController = (AllMessagesViewController *)[arrControllers objectAtIndex:[arrControllers count]-2];
  objAllMessagesViewController.title = @"New Messages(1)";
}
于 2012-09-19T12:41:09.080 に答える