2010-01-21 2 views
0

Я пишу IM-клиент на iphone.// post ref: # IMClient01. Вот мой первоначальный дизайн этого:IPhone Мгновенное сообщение Клиент desgin проблема

(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, есть два способа, чтобы начать разговор/chat.You может общаться с пользователем Skype, нажав на пользователе от контакта, или если есть история чата, связанная с пользователем, вы можете нажать «История чата в чатах». если приведенный выше сценарий сопоставлен с моими классами контроллера: Если нажатие на ячейку/строку в ContactController, то нажмите ChatController на верхний вид. Если вы нажмете ячейку/строку в ChatsController, тогда нажмите ChatController на верхний вид.

В двух кнопочных операций, это было бы что-то вроде:

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

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

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

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

ответ

0

В соответствии с моим ответом на ваш вопрос, back button goes back to a different UITableViewController from where it came from, вам необходимо полностью отказаться от навигационного контроллера и управлять переключением представлений с помощью специального кода.

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

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

Смежные вопросы