IPhone Instant message Client desgin problem

可紊 提交于 2020-01-06 13:07:21

问题


I am writing an IM Client on iphone.// post ref: #IMClient01. Here is my initial design of it:

(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.

As in Skype on IPhone, there are two ways to start a conversation/chat.You can either chat with a Skype user by tapping on the User from Contact or if there is a Chat History associated with the user, you can tap the Chat History in Chats. if the above scenario mapped to my controller classes: If Tapping a cell/row in ContactsController then push ChatController to top view. If Tapping a cell/row in ChatsController then push ChatController to top view.

In the two push operations, it would something like:

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

My first question is should myChatController be a singleton class? Unlike on computers,where you can have many chat windows open and each window manages a chat with a different person, in IPhone, there is only one top view/window, so only one chat window can be displayed?

My second question: Would this be a good idea if ContactsController and ChatsController each has a ChatController instance variable that points to the same ChatController instance? So when a cell/row in ContactsController or ChatsController is tapped, the same ChatController instance is pushed to the top view to display the conversation?

Am I explaining myself clear enough? I would really appreciate if someone can give some suggestions.


回答1:


In keeping with my answer to your related question, back button goes back to a different UITableViewController from where it came from, you need to abandon the navigation controller entirely and manage the switching of views with custom code.

As such you don't need to worry about using a singleton (which is hard to do in Objective-c anyway.) Nor to you need for the ContactsController and ChatsController to really know about the ChatView because they won't be loading and displaying it. Instead you will just have single attribute for the ChatView in the custom controller that manages the swapping out of all the views and the shifting of tabs.

All very ungainly and complicated but it will work.



来源:https://stackoverflow.com/questions/2112716/iphone-instant-message-client-desgin-problem

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!