0

私はiphoneでIMクライアントを書いています。//投稿参照:#IMClient01。これが私の最初のデザインです:

(UIView*)LogInWindow; // to log in
(UITabBarController*) MainTabBarController;//have three tabs, namely:Contacts, Chats, My Profile 
(UITableViewController*)ContactsController; //manages a list of contact/user
(UITableViewController*)ChatsController;    //manages a list of chat history, each row is a chat with a different person
(UIViewController *)ChatController; //manages a chat/conversation with a single user.

Skype on IPhoneと同様に、会話/チャットを開始する方法は2つあります。Skypeユーザーとチャットするには、[連絡先]から[ユーザー]をタップするか、ユーザーにチャット履歴が関連付けられている場合は[チャット履歴]をタップします。チャットで。上記のシナリオが私のコントローラークラスにマップされている場合:ContactsControllerでセル/行をタップする場合は、ChatControllerをトップビューにプッシュします。ChatsControllerでセル/行をタップする場合は、ChatControllerをトップビューにプッシュします。

2つのプッシュ操作では、次のようになります。

[self.navigationController pushViewController:myChatController animated:YES];

私の最初の質問は、myChatControllerをシングルトンクラスにする必要があるかどうかです。多くのチャットウィンドウを開くことができ、各ウィンドウが別の人とのチャットを管理するコンピューターとは異なり、iPhoneでは上面図/ウィンドウが1つしかないため、表示できるチャットウィンドウは1つだけですか?

私の2番目の質問:ContactsControllerとChatsControllerがそれぞれ同じChatControllerインスタンスを指すChatControllerインスタンス変数を持っている場合、これは良い考えですか?では、ContactsControllerまたはChatsControllerのセル/行をタップすると、同じChatControllerインスタンスがトップビューにプッシュされて会話が表示されますか?

私は自分自身を十分に明確に説明していますか?誰かが何か提案をしてくれたら本当にありがたいです。

4

1 に答える 1

0

関連する質問に対する私の回答に沿って、戻るボタンは元の場所とは異なる UITableViewController に戻ります。ナビゲーション コントローラーを完全に放棄し、カスタム コードでビューの切り替えを管理する必要があります。

そのため、シングルトンの使用について心配する必要はありません (Objective-c では難しいことです)。また、ContactsController と ChatsController が ChatView を実際に認識している必要もありません。これらはロードも表示もされないためです。それ。代わりに、すべてのビューのスワップ アウトとタブのシフトを管理するカスタム コントローラーに、ChatView の単一の属性を設定します。

すべて非常に不格好で複雑ですが、うまくいきます。

于 2010-01-22T14:12:47.600 に答える