IPhone Мгновенное сообщение Проблема с клиентом - PullRequest
0 голосов
/ 21 января 2010

Я пишу IM-клиент на iphone .// сообщение: # 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 на IPhone, есть два способа начать разговор / чат. Вы можете пообщаться в чате с пользователем Skype, нажав «Пользователь» из «Контакта», или, если с ним есть история чата, вы можете нажать История чата в чатах. если приведенный выше сценарий сопоставлен с моими классами контроллера: Если коснуться ячейки / строки в ContactsController, то переместите ChatController в вид сверху. Если коснуться ячейки / строки в ChatsController, то переместите ChatController в вид сверху.

В двух операциях push было бы что-то вроде:

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

Мой первый вопрос: должен ли myChatController быть одноэлементным классом? В отличие от компьютеров, где вы можете открыть много окон чата, и каждое окно управляет чатом с другим человеком, в IPhone есть только один вид сверху / окно, поэтому может отображаться только одно окно чата?

Мой второй вопрос: было бы неплохо, если бы у ContactsController и ChatsController была переменная экземпляра ChatController, указывающая на один и тот же экземпляр ChatController? Таким образом, при касании ячейки / строки в ContactsController или ChatsController один и тот же экземпляр ChatController перемещается в вид сверху для отображения диалога?

Я объясняю достаточно ясно? Я был бы очень признателен, если бы кто-то мог дать некоторые предложения.

1 Ответ

0 голосов
/ 22 января 2010

В соответствии с моим ответом на ваш связанный вопрос, кнопка назад возвращает вас к другому UITableViewController от того, откуда он пришел , вам нужно полностью отказаться от контроллера навигации и управлять переключением видов с помощью пользовательского кода ,

Таким образом, вам не нужно беспокоиться об использовании синглтона (что в любом случае сложно сделать в Objective-C). Также вам не нужно, чтобы ContactsController и ChatsController действительно знали о ChatView, поскольку они не будут загрузка и отображение. Вместо этого у вас будет только один атрибут для ChatView в пользовательском контроллере, который управляет выгрузкой всех видов и смещением вкладок.

Все очень неуклюже и сложно, но это будет работать.

...