开发者

First iPhone Multiview App - Some Guidance

开发者 https://www.devze.com 2023-02-14 23:27 出处:网络
I\'m wanting to make a multiview app with 5-6 different screens and a data source to store user information. I\'ve never made a multiview app before, and I have a good idea on how to start, but I\'d l

I'm wanting to make a multiview app with 5-6 different screens and a data source to store user information. I've never made a multiview app before, and I have a good idea on how to start, but I'd like to hear some recommendations on "structuring" your app to properly support this.

A very simple analogy could be going about making a background color on a website... You could either use an image of a solid color or simply use the background-color style. Both get the job done, but using the style is a bit easier/more efficient.

I just want to make sure I'm starting off on the right foot. Should I keep all my functions in one class' .m/.h file? What's the best/efficient way to go about different screens?

Thanks, and I'll d开发者_如何学JAVAefinitely try to help others out once I get a much better grasp on Objective-C and Xcode.


If you are new to the iPhone/iPad I highly recommend you check out the CS193P lectures, they are also avaliale on itunes. They give a good overview of iPhone programing and how things are done in Objective-C / Cocoa Touch. It will get anyone started in the right direction.

As to your specific question. Just start coding. In 6 months you'll realize eveything you wrote is cr*p and needs to be rewritten anyways, but doing it is the only way you'll realize what you wrote is cr*p so...

Some suggestions, specific to multi-viewed apps (which almost every app is) and I'm sure someone else can expand on this...

  1. Learn (as much as possible) to code interactions between different views and viewcontrollers (vs using interface builder). The twitter app for example doesn't use Interface Builder at all.
  2. If you use IB, don't dump everything into one .xib. Learn how to break them up. One .xib per viewcontroller should be it. I never use the IB UITabBarController or IB UINavigationController, those get initilized and used in code only.
  3. Absolutly learn MVC (Model view controller).


The Apple documentation is often a good place to start for most things. Try here first. Hope this helps and good luck!


I used to use a UINavigationController. I created it as a singleton and accessed it statically so I could push and pop controllers easily (theres a reasonably good tutorial here). This is quite lightweight and theres enough documentation to get going with it quickly.

However the best approach I've used is the Three20 framework's TTNavigator. In a nutshell its a beefed up UINavigator that lets you push a new view onto the screen by calling an internal URL:

//(In your app delegate)
//Start up the navigator
TTNavigator* navigator = [TTNavigator navigator];
navigator.persistenceMode = TTNavigatorPersistenceModeTop;

//Map url's to controllers
TTURLMap* map = navigator.URLMap;
[map from:@"*" toViewController:[TTWebController class]];
[map from:@"ac://search" toViewController:[SearchViewController class]];
[map from:@"ac://results/(initToView:)" toViewController:[ResultsViewController class]];

Then to navigate to a controller:

[[TTNavigator navigator] openURLAction:[[TTURLAction actionWithURLPath:@"ac://results/searchResults/"] applyAnimated:YES]];

Whats also cool is that calling that @"ac://results/" the way we have above passes in the param @"searchResults" to the init method of the ResultsViewController ("initToView:") as we defined in the mapper

All the best!

0

精彩评论

暂无评论...
验证码 换一张
取 消