Foxconn to ship 20 million iPad 2s, Sprint tells employees to keep their traps shut, and more in this week’s mobile news

Foxconn is expected to ship 20 million iPad 2s in the 3rd quarter.

Apple releases iOS 5 Beta 7 to developers.

Sprint tells employees to keep quiet about the iPhone.

iTunes Match music streaming feature removed from iOS 5 Beta 7.

Financial Times app removed from App Store.

Tutorial: Using Cocos2D iPhone and Box2D To Easily Create A Platform Game

Box2D is a great physics engine, but while there are some iOS code examples out there – there really aren’t too many tutorials around utilizing the iOS platform that also demonstrate the fundamental principles used by the engine.

I’ve found one tutorial that does a great job of explaining some of the more intermediate Box2D tutorial topics utilizing Cocos2D iPhone – specifically addressing Forces, Ray Casts and Sensors.  I previously mentioned the first part of this tutorial which was created using LevelHelper and SpriteHelper (which are not required for this portion of the tutorial).

The tutorial demonstrates the creation of a Kid Icarus style platform game, and utilizes sensors and ray casts so the enemies can attack the game character with intelligence, and applies forces to keep the enemies floating in the air.  The tutorial also demonstrates how to create a HUD overlay in Cocos2D for the game menu, and life tracker.

Here’s a video demonstrating the tutorial in action:

You can find the tutorial in 3 parts here – full source code is provided so you can jump right to the second part if desired:
Pt.1 How To Use SpriteHelper And LevelHelper
Pt.2 Intermediate Box2D Physics
Pt 3. How To Create A HUD Layer With Cocos2D 

Overall, I think it’s a great tutorial on building a platformer.   Personally I really never thought of using Box2D for some of the functionality it’s used for in the tutorial, but it definitely makes things easier once you have a basic understanding.

©2011 iPhone, iOS 4, iPad SDK Development Tutorial and Programming Tips. All Rights Reserved.

.

DeliciousTwitterTechnoratiFacebookLinkedInEmail


Getaround: Social Car Sharing

Living in a big city has many perks, but parking is certainly not one of them. While many urbanites rent a parking space that has a monthly cost rivaling a 3-bedroom house rental in many mid-western states, there are other city dwellers that opt for the commuter route. But, how does the latter deal with the bi-annual IKEA shopping extravaganza, holiday weekend getaway or even just late night travel? While there are taxis, Zipcar, City Car Share and various rental companies offering their services, they are often expensive and inconvenient.

Enter Getaround, a free “peer-to-peer car sharing service and local car rental.” Getaround offers a social car sharing solution for both owners and renters. Interested? Learn more after the jump.

The Lowdown

Getaround solves urban car-owning related problems with its social car-sharing network, which connects owners with renters. Started in 2009 by Sam Zaid, Jessica Scorpio and Elliot Kroo, Getaround’s app uses geo-locating to find cars available for rent in your immediate area. On the app, renters have the option to use their current location or a specific address to enable relevant choices via a map or list option.

Getaround uses your geo-location to find available cars in your area. These cars may be viewed in map or list format.

Getaround uses your geo-location to find available cars in your area. These cars may be viewed in map or list format.

The list option provides a listing for each available car. The car listing includes such pertinent items as a photo of the car, make, model, distance the car is located from you and the rating the car (and owner) has received. Unlike some superfluous rating systems, these ratings are actually a very worthwhile component. After every rental, the renter is asked to rate the user experience — commenting on everything from how clean the car is to communication efficiency (or failure) on the owner’s part. The order of the listings is dictated by the location of the car in relation to you.

Detailed information pertaining to the rental.

Detailed information pertaining to the rental.

After selecting a car you are interested in (hello Tesla Roadster), you are navigated to a more in-depth review of the car. The categories covered are: owner information, location, availability, top features, photos, owner description, pickup instructions and ratings & reviews.

More photos of the rental, the owner's description and pickup instructions.

More photos of the rental, the owner's description and pickup instructions.

The owner portion features a picture of the owner, their rating, their response rate (some owners are much better than others) and their average response time. The location is pretty self-explanatory and so is the availability, basically, a weekly schedule showing which days/times the car is available. Top features reveals the car’s basic features and the photos provided are, well, photos of the car. The owner description is an added bonus — you wouldn’t believe how many people name their cars. Pickup instructions are just that, however some cars are equipped with a Carkit option. The Carkit option allows renters to use their smart phone to unlock the car, cutting out of the equation the need to meet the owner for a key swap. And finally, the ratings and reviews section, which I find highly useful as it paints a broader picture of both the car and the owner.

More photos of the rental and an owner's description of a car (not the Tesla).

More photos of the rental and an owner's description of a car (not the Tesla).

Two other add-ons I should mention about this section, are that each car has a prominent hour/day/week rate option at the top of the screen and you have the option to “favorite” any car. This option is helpful if you want to browse multiple cars before making your decision.

What’s Next?

After choosing your desired rental, you are asked to confirm the date/time for both the pickup and drop off. You are allowed to request up to five rentals, for the event that one of your requests is unavailable.

Slick time/date picker and a review of rental request.

Slick time/date picker and a review of rental request.

Then it becomes a waiting game to see which owner responds first to your request in order to win your business. After you confirm with the owner that you are indeed still interested in renting, you are ready to roll.

Rental confirmation and extras.

Rental confirmation and extras.

When you are finished with your rental, you will be asked to rate your experience. Hopefully, it was a good one and did not involve any speeding or parking tickets.

Legalities

What about insurance? Getaround handles this poignant question with ease utilizing Berkshire Hathaway for its renters insurance, providing liability, collision and comprehensive coverage that replaces both the renter’s and owner’s policies during the rental period.

The Owner

For this review I focused on the renter’s side of the app, however, Getaround makes it extremely easy for the owner as well. If you have a spare car taking up space, you might as well be making some extra cash off of it. However, Getaround will commandeer a 40% commission in order to cover insurance and cover their service expenses.

Conclusion

Getaround is an extremely useful app for arranging peer-to-peer car rentals. The user interface is easy to use, and the Carkit feature is a nice touch. The overall design is uncluttered and functional. A component that I would like to see added is the option to choose certain features that would be useful for a renter, such as manual vs. automatic transmission, number of passengers, trunk space, pet-friendly, etc. As it stands, users have to troll through the listings to find the features they need. Regardless, it is still my number one choice when renting a vehicle in the Bay Area.

Getaround is currently only available in the San Francisco Bay Area, but it will be nationwide very soon.

iWork for iPhone: Pages

The iPhone has already seen a fair amount of attempts at apps that provide you with word processing capabilities on the move, but none of them have really offered a solution that’s very compelling. Some lack basic features such as text formatting yet run butter-smooth, whist others offer too many features that ultimately leave the iPhone’s 3.5-inch screen far too cluttered and bloated plus suffer from horribly slow and laggy performance issues.

Apple has long offered their own office software suite on the Mac, and then launched it for the iPad when the stallion of a tablet was released. Now, Apple has updated their iPad offering to make all those iWork for iPad apps universal — meaning the iPhone finally gets some iWork action. It was a long requested feature, so how does iWork for the iPhone stack up against the competition? In this series of reviews, we’re going to find out, starting with Pages.

Getting Started

Upon opening the app for the first time, you’re greeted with a very clean, fresh interface that’s typical of Apple. There’s a Getting Started document preloaded in the app that you can read through to learn the key features as well, which is a nice touch.

Tapping the plus icon on the screen will allow you to create a new document, or import an existing document in from iTunes, iDisk or even WebDAV — the latter of which is a slightly strange inclusion, but useful for some people nonetheless. If you choose to create a new document, you’re presented with a grid of template thumbnails to choose from, including Classic Letter, Syllabus and others such as Resume. Of course, you can also just choose to start with a blank page.

Pages includes some incredibly beautiful templates.

Pages includes some incredibly beautiful templates.

Features

When it comes down to it, no matter how pretty an interface, we need features to actually deem the app useful — and on that front, Pages delivers in almost all sectors.

Text Formatting

Arguably, the most important aspect of any word processor. Pages touts an impressive number of options, including the basics such as bold, italic, underline and strikethrough. You can also change the colour of text, choose from an impressive list of fonts and adjust the size. There are lists too — bullet pointed, lettered or numbered.

Styles are there as well, although unlike the Mac version of iWork, they’re not user editable. Still, for knocking up a quick document with titles, headers and body text, they work well.

Layout

Even with such a small screen compared to one on a device you’d generally use for word processing, Pages doesn’t let you down on layout options. You can change text alignment, even add multiple columns to your document and change the line spacing.

Pages features plenty of text formatting options.

Pages features plenty of text formatting options.

Media and Shapes (non-text based stuff)

Pages makes use of your iPhone’s built in photo library, allowing you to import photos on your phone into your document. Once it’s imported, you can align it, add borders (that are very nicely designed, too) and even use two fingers on the screen to rotate the image. Oh, and don’t forget cropping, resizing, shadows, reflections and opacity settings. Phew!

You can go on to add shapes such as arrows and stars, freeform text boxes, charts, tables with multiple formatting options and even more. In a nutshell, Apple has largely kept most features from the desktop versions of iWork. Very impressive.

File Syncing and Transfer

So once you’ve finished your document, how do you go about printing it or getting it to its final destination? Well, Pages has most bases covered.

In the Tools and Sharing menu from within a document, you can go ahead and email, print (using AirPrint and a compatible wireless printer, of course), share on iWork.com, send to iTunes and copy to iDisk or WebDAV. Choosing any of those options pops up a little interface, where you can select what format to export the document — Pages, PDF or Microsoft Word.

Whilst you do have a good selection of options, there is one glaring omission: copy to Dropbox. Now in all fairness, I never expected Apple to actually include this, especially while MobileMe and iDisk still exist. Hopefully it’s something we will see very soon as Dropbox is hugely popular, and unfortunately for Apple, not every single Dropbox user is going to want to switch entirely to iCloud when iOS 5 makes its debut.

We have some nice export options here, but no Dropbox.

We have some nice export options here, but no Dropbox.

Interface and Performance

Using the app is generally a pleasant experience. Apple has pretty much nailed the interface to about as good as it can get for a mobile app of this calibre. Sometimes it can feel slightly cluttered, but it’s nowhere near as bad as some of the alternatives.

Performance of the app can really take a hit when the document you’re working on gets past a few pages long. Text entry becomes a little sluggish and it sort of feels like going from an iPhone 4 to an iPhone 3G — but hey, its a limitation of the current hardware and there’s not a lot that can be done to fix it. Besides, it isn’t drastically bad and it’s definitely fine to work with. I mean, come on, it’s an iPhone, not an iMac.

There are a couple of aspects where I felt a little let down, however. First, text wrap. There is none. Essentially, as you type the text will scroll sideways so you always see what you’re typing, and when you hit the end of the page it starts a new line. It’s keeping the layout of a normal document intact, whilst making the text large enough for you to read. It makes sense, but I would have liked to have seen a toggle switch at least. You can pinch out to zoom out and see the whole document, but as soon as you start typing, it zooms in again.

Secondly, there’s no landscape support. I understand the interface would need adjustments, especially when it comes to text formatting because there’s very little vertical space to display many options, but this is a word processor. I would have liked to have been able to at least type plain text in landscape and switch back to portrait to apply any adjustments.

Pricing

As it currently stands, Pages is priced at $9.99. It is indeed universal, so the iPad version is included in that price too. Pages is a pretty advanced application, so I think the price is justified, even if it is among the more expensive apps on the store. There are cheaper, and even free alternatives, but Pages is a great example of getting what you pay for.

Conclusion

Apple has almost nailed word processing on the move. Besides a few little annoyances, it doesn’t get much better than this. The interface is slick and oozes with Apple style, performance is pretty good and there are some decent export options. In my opinion, Pages is the most concise word processor on the App Store.

iSmoothRun: Take Your Running Further

I’m a casual runner. It’s a sport that I’ve picked up and let fall many times in the course of my life. At the moment, I’m enjoying probably the most sustained period of regular running that I’ve so far managed. I do want to emphasise that: enjoying this past year of regular workouts really has been rewarding and fun.

I began this period with my iPhone, using the excellent Get Running app to get from my couch to running 5k in a few months. And then I wanted to keep track of my runs and tested a few different apps, including Nike+ GPS and Runmeter, before settling on Runkeeper back in January of this year. And I’ve stuck with Runkeeper, paying up to become an Elite member (which adds a few features and lets you sign up for half-price fitness training courses).

When Runkeeper opened up their API earlier this year, it became possible for outside developers to interface with their services. Today I’m going to be exploring one app that’s taking advantage of that capability, Lake Horizon Ltd.’s iSmoothRun ($4.99). Join me after the jump to check it out.

On Your Marks, Get Set …

The first thing you’ll see when you start up iSmoothRun is the New Run page:

Where it all begins...

Where it all begins…

This page is a doorway to the app, and from it you can set up your activities exactly as you need. From the Activity menu you can select from Running, Trail Running, Walking, Hiking, Cycling or Mountain Biking. The Workout menu lets you select from a number of built-in workouts — challenging yourself to run to a specific distance, for a set time, or until you’ve burned a particular number of calories. Here you can also add you own workouts, including intervals, which is great if you’re into Fartlek or other variations on interval training. The interval editor allows you to be quite specific in setting up your parameters.

Fine-tune your interval training here.

Fine-tune your interval training here.

The Weight setting, of course, is where you enter your weight — this information is used, along with other details you can input in your user profile, to estimate the calories burned during your workouts.

You can use the Shoes menu to keep track of the mileage you’ve completed in your running shoes or on your bicycle, so I can see that I’ve completed a little over 330 miles in my New Balance shoes in the last 9 or 10 months.

The final menu item, RunKeeper Live, will only work if you are a RunKeeper Elite member. This is a live tracking feature that allows you to broadcast your workouts to your RunKeeper page so that others can keep track of where you are — if you’d like to know more about it, you can read more in this post on the RunKeeper blog. This has been handy a few times when I’d taken longer than expected coming home, and my wife was able to check online to see where I was at.

… Go!

When you hit Start your run, the screen changes to the in-run display:

Right at the start of a new run

Right at the start of a new run

Here you can see live feedback on your progress: time, pace, cadence, distance, calories burned. Tapping the Map button will show your map position.

The settings on this view seem to be the only way to access what could be a very useful feature: the metronome. This is useful in working with your running cadence (I’d not heard of cadence before I started using iSmoothRun, and it’s been difficult to find good information online, but the idea is that increasing the number of steps you take per minute can improve your running speed). I found fumbling through these settings difficult with the phone strapped to my arm, and would have preferred to be able to set the metronome running before I got started.

In-run audio cues in iSmoothRun are clear and don’t sound as mechanical as the RunKeeper app’s announcements. They’re configurable, so that you can choose to hear updates on your pace, cadence, time, distance, average workout pace, and — if you have a Wahoo Fitness adaptor and a compatible sensor (I don’t, but would love to try one!) — heart rate. You can also set whether announcements are time or distance triggered.

Run History

The Log page keeps a record of your past runs.

Your workout history is in the Log.

Your workout history is in the Log.

The icon at top right (is that an index card?) allows you to filter by activity. Tapping on a particular run brings up more details:

All your workout details recorded

All your workout details recorded

The Feeling line is one you set at the end of your run, before saving the data. Tapping Ghost Run at this point will allow you to compete with the recorded run, which is a great way to test yourself against your past achievements.

As you’d expect, Continue allows you to carry on with the run if you were previously interrupted — I’m sure there are circumstances in which this would be useful. Certainly, one of the frustrations I had with the RunKeeper app is that I managed to accidently hit the Stop button on a number of occasions (it can be a bit difficult to hit the Pause button accurately when you have your iPhone strapped to your arm!). So being able to resume a mistakenly-stopped activity would be useful to have.

The Export button allows you to send your runs by email. These arrive as a simple text email with the information summarised on the run details screen, along with attachments in .csv, .kml, .gpx and .tcx formats, which allow you to import and view your run data in various Mac and PC desktop training logs. And it’s also kinda cool to open the the .kml files in Google Earth and watch as the viewpoint sweeps in from space to display your route. This is also where you can send your runs to a number of social exercise networks: Daily Mile, RunKeeper, RunningFreeOnline, TrainingPeaks or TribeSports. I only have experience of the first two of these, and the integration works excellently.

Map, of course, show you a map of your route. This includes the colour-coded pace information with which users of Nike+ GPS will be familiar:

Your route, recorded and colour-coded for speed.

Your route, recorded and colour-coded for speed.

Cool down

I feel there’s still quite a bit to be said about iSmoothRun: it really is pretty comprehensive and covers just about everything one could hope for from a workout app. But I want to start to slow down now, as I approach the end, and so here are a few observations and issues.

One thing that I miss in iSmoothRun is the ability to control my music from within the app — none of the other apps I’ve so far used had this capability either (though Kinetic GPS, which I’ll be reviewing here soon, does), but I’m coming to feel that this really is a useful feature. I like that you can choose to have your music pause or duck into the background during audio cues, as I often missed bits of audiobooks while running with RunKeeper, which has no equivalent setting.

I encountered discrepancies between iSmoothRun’s records of run distance and those that appear in RunKeeper. These are usually quite trivial, but sometimes have been larger. Take the run I did last Tuesday: it’s recorded in iSmoothRun as 4.03 miles, but shows in RunKeeper as 4.04 miles. There have been larger differences: what’s interesting about this one is that I was also wearing a Garmin Forerunner 110 sports watch, which measured the distance as 4.07 miles. I posted a question about this to RunKeeper’s forums, and a few others joined in with similar issues. The developer posted a response, explaining that these discrepancies are due to the form in which RunKeeper expects location data to be recorded.

That explanation points to a second issue: the GPS lock seems to be slower than in other running apps. I’m not sure how this can be so, but it seems that even if you have the app open as you approach the start of your run, it won’t actually lock on until a few seconds after you press the ‘Start your run’ button. I’ve also had the app lose GPS signal once or twice while running — I can’t say for sure that this hasn’t happened with any of the other apps I’ve tried, since they don’t announce their GPS status in the way that iSmoothRun does.

Conclusion

These few issues aside, I’m very pleased with iSmoothRun, and it’s certainly displaced RunKeeper as my go-to running app. I love that it interfaces with RunKeeper, so that I can continue using the web service that I’m used to and enjoy. It’s elegantly designed and very comprehensive, and its inclusion of cadence, in particular, makes it a great option if you’re a serious runner. As I said, I’m not, but I feel that iSmoothRun is helping me to take my running that little bit deeper and farther.

iHome+Sleep: A Feature Packed Alarm Clock

Can I just be honest about something? Alarm clocks are so way behind the times and I wish they would catch up with the technology that is out there. Thus, the reason why I started the search for a good alarm clock app to use on my iPhone. I really didn’t know what exactly I was looking for, but I wanted something that was a heck of a lot better than the digital alarm clock that I had in my room.

I decided to give out the iHome+Sleep app a try to see if it could actually work as my regular alarm clock. It has a ton of features, some of which that I felt were useful, and the best part of it all was that it was free. And to make it even better it’s a universal app, meaning that it was optimized for both my iPhone and iPad. Want more? Hit the jump to find out.

Navigation

When you first get to the home screen there really is a lot going on. At the top, you can set the weather for your current city and see the weather for the next couple of days. In the middle, you see the current time and a music button, which tells you what song will be playing when you get up in the morning. Then below that, you see a slider with either Bedtime or Wakeup. This slider functions as a way to log your sleep, which the app does a good job of helping you monitor.

Home Screen of App

Home Screen of App

Alarm Settings

When it comes to setting an alarm on this app, there is no shortage of options. You can set it for a specific time and a specific day, but you can also set an alarm for a nap as well. The difference is the nap alarm is set by alerting the app that you want to wake up in a certain amount of minutes, instead of a specific time. Your other options are to have the alarm repeat during specific days of the week, and you can also set a snooze duration.

You are also given some sleep and wake options to choose from. You can choose music to sleep to and the option of when the music should go off as well as music or an alarm sound to wake up to. The one thing that I couldn’t quite figure out is that it seemed like I couldn’t pick a certain song to wake up to — I just had to go with whatever song was picked for me. I tried to search throughout the settings for this option, but saw none.

Some of the settings for the alarm

Some of the settings for the alarm

Another nice option in the alarm settings is the reminders. You can set a reminder for yourself right before you go to bed or when you wake up in the morning. For example, if you don’t want to forget to take out the trash in the morning, you can write that as your reminder and you will get a push notification in the morning when your alarm goes off.

Creating reminders for bedtime or when you wake up

Creating reminders for bedtime or when you wake up

And of course, no alarm setting is complete without some social media aspect to it. From within the app you can tweet out or send out a Facebook post about the time you are going to sleep or the time you are waking up.

Social media options

Social media options

Stats

A cool option in this app is the stats that are collected. They range from how many snooze cycles to the hours of sleep that you get. You are also shown your average hours of sleep and the amount of hours you have slept since using the app previously. The last stat you will see is the sleep and wake time for each day that you use the application.

Sleep Log Features

Sleep Log Features

Other Cool Features

There are a couple of other settings that are worth mentioning. You have the option to change the home screen background with images that are in the app or pictures that you have.  The second feature is what is called Overnight News. If you set up your Twitter and Facebook on the app you can get the option to view your tweets and Facebook posts that you missed while you were sleeping. That’s a handy feature to have.

Tweets from overnight

Tweets from overnight

Conclusion

As you can see, the app itself is packed with lots of features. The best part of all is the fact that the app is free and it’s also a universal iOS app. It is worth mentioning that the iPad app looks nice and has the same features as the iPhone app does.

Overall, this is a very solid application. If you are looking for an alarm clock app that packs in some great features, then this is the one for you. At the same time, I can see how the many options could overwhelm someone who wants a simple alarm clock app, but for the low price of free, you really can’t go wrong. My advice is to try it out and play with it for at least a week, then make a decision if you like it or not. I know at first it was a little overwhelming for me, but the more I used it, the more I liked it and the extra features that it provides.

Best of AppStorm in August

We’ve collected the top four reviews, roundups and how-to articles from across the AppStorm network in August. Whether you’re interested in Mac, iPhone, iPad, Web, or Android apps, there’s bound to be something you didn’t spot over the course of the month. Now would be a good time to explore a part of the AppStorm Network you’ve never seen before!

Thanks for reading AppStorm, and I hope you enjoy looking over some of our favourite posts from last month!

Best of iPad.AppStorm

The iPad: A Student’s New Computer?

The iPad: A Student’s New Computer?

The newly refreshed Macbook Air is the best laptop Apple has ever devised for students. Even the lowest end model, with its paltry (by current standards) 2GB of RAM, would be fine for most students I know. Add the Air’s ridiculously fast SSD into the mix, and you’ve got a seriously slick machine.

But wait, what other Apple product is impossibly thin, has flash-based storage, and is super fast? The iPad, of course.

15 Essential iPad Apps for Students

15 Essential iPad Apps for Students

Student life can be daunting; assessments, deadlines, classes, exams and maybe even a social life. It doesn’t have to be this difficult though. The iPad is naturally a great productivity tool and, loaded with the right apps, it can be your best weapon for surviving education.

Most of these apps cost less than a pint of your favourite beer and will increase your productivity leaps and bounds, saving you countless hours of otherwise wasted time. Start reading now and learn how to ensure you never miss a deadline again!

WriteRoom: Getting iPad Writing Right

WriteRoom: Getting iPad Writing Right

The iPad is a great platform for consuming various kinds of media, from books and films, to news and games. But working on the iPad, and for me that mostly means writing, has been something less than a stellar experience.

Read on to find out how WriteRoom manages to overcome the iPad’s operating quirks in clever and thoughtful ways that make it much more attractive as a serious writer’s tool.

Making a Podcast With GarageBand for iPad

Making a Podcast With GarageBand for iPad

With GarageBand installed, an iPad is a powerful and portable tool for musicians. However, just like its desktop version, GarageBand for iPad can also be employed by non-musicians too, as I’ll highlight with a step by step guide to making a podcast on your iPad, complete with accompanying music.

This How-To will be aimed towards those who have a basic understanding of GarageBand, or at least the principles behind music software in general, but I will endeavour to keep each step as beginner friendly as possible. If you have any questions or problems, please let us know in the comments and I’ll attempt to help you through it.

Best of Android.AppStorm

Samsung’s Galaxy Tab 10.1 Review: It’s Out of This World

Samsung’s Galaxy Tab 10.1 Review: It’s Out of This World

It may surprise you to learn that I’m a big tech nerd. I love my devices and I like to upgrade when I can. Back in October, I picked up an iPad (first gen), admittedly knowing it was probably poor timing. While it was the best on the market at the time, I figured that in 4-6 months time some new ones would hit the market. I used it for a while but wasn’t really impressed with it. Aside from some nice apps, it was pretty heavy, and generic as far as UI goes. I couldn’t find a great use for it. When the Samsung Galaxy Tab 10.1 was announced in May I knew that it was my next tablet. I went out and bought it last week and was excited to see how it would measure up compared to my personal hype.

Smart Tools: Your Portable Toolbox

Smart Tools: Your Portable Toolbox

How often have come you across a situation where a scale or compass was a necessity? Not often, I know. But at times, there might be an odd job and you might have to measure the length of something or check if the angle of a furniture is right. A scale and a protractor are not the tools one would carry in his pocket these days — but almost all of us carry a mobile phone.

12 Great Sources for Your Coffee Time Puzzle Break

12 Great Sources for Your Coffee Time Puzzle Break

Remember the time when crossword puzzles and sudoku mornings meant newspapers? In fact, remember newspapers? Like most good things, these puzzles have also made their way to the smartphones and are in many ways better than their printed counterparts. When was the last time you kept score of your timing on the kakuro sprints? Let’s look at a few notable tree savers that give you just one more reason to get your Android out in the morning.

Credit to MiniSQUL for the crossword photo.

HTC Sensation: A Review of HTC’s New Beast

HTC Sensation: A Review of HTC’s New Beast

HTC were actually late comers to the Dual-Core game, which is unusual for the company that has a reputation for being first to everything (Android and 4G in USA to name a few), but will their entry, the HTC Sensation, be worth the wait, or have they too entered the market purely for publicity? Read on for the review.

Best of iPhone.AppStorm

The Hit List for iPhone: Worth the Wait?

In my never ending search for the ideal GTD system, I’ve tried out dozens of apps for both the Mac and iPhone. Early in my search, I came across The Hit List, and found myself very impressed with its stylish but casual interface and its complete, customizable feature set. Like many other users, I patiently waited for the promised iPhone companion app, only to realize that development on the whole project had apparently come to a halt.

Now, over two years later, developer Andy Kim has finally released version 1.0 of The Hit List for Mac, and the much anticipated iPhone app. Was it worth the wait? Read on to find out!

45 Unique iPhone Home Screens Explained

Last week we asked you to show us your iPhone’s home screens, and the response was overwhelming. So much so that we decided to show off as many home screens as possible by packing it into one big roundup.

Now, of course, there are a few duplicates here and there, but we did our best to trim it down and make the list a bit more manageable. Thanks to all of you who submitted your home screens, and hit the jump the check them out!

HQ: the Stunning Way to Manage Tasks

To-do lists are inherently boring. They’re really nothing more than a bunch of items that you want to get done at some later point, be it three hours from now or next week.

HQ, the inaugural app from Sleeping Giant Apps, aims to change that. It tackles the issue of list keeping with one goal: to provide excellent functionality within a stunning, easy-to-use interface.

Steve Jobs: A Thank You

It’s always hard when a member of your family moves on, and today, that’s how we here at AppStorm feel about Steve Jobs. No, we’ve never technically worked alongside the legend, but because we’ve written about him for the past few years, most of us feel this personal connection to the man that’s been the driving force behind Apple. And it’s hard not to, because he’s been in our lives for so long now.

And now, it’s time that we say goodbye to Steve, as he’s stepped down from the CEO position at Apple, to his new position as Chairman of the Board. But this isn’t Steve’s eulogy — no, he’s got too much life in him for that. This is a celebration of all things Steve, and our own way of saying thanks to the man who helped us do what we love to do.

Best of Web.AppStorm

Read Your Kindle Books Online With Kindle Cloud Reader

Amazon blazed the trail for eBooks with their Kindle platform, starting with the original Kindle device and the Kindle store. Even if you didn’t own a Kindle, you could read Kindle books on most platforms with native apps. However, if you used a Chromebook, Linux computer, or other device without a Kindle app, you were out of luck.

That’s all over now. Amazon just released their new Kindle Cloud Reader, a full-featured Kindle web app so you can read your Kindle books right in your browser. It’s got all the features you’d expect, lets you save your books for offline reading, and even works great on the iPad. After the break, we’ve got screenshots and more info about the newest Kindle app, the app that just might be the main future of the Kindle platform.

SmartQ: Visual Project Management That Conforms to You

When it comes to project management, most web apps offer the same basic features: a group of to-do lists, some kind of messaging board, a few gigs of file storage, shared document-editing, a calendar of some sort, and if you’re lucky, a set of reports.

But what most don’t offer is the ability to develop a project-management workflow that conforms to the way your team already works, and without this customization, you lose precious time trying to get everybody up to speed on the new way of doing things. In my experience, that ramp-up time usually results in project members abandoning the app and reverting to project management by email.

Enter SmartQ.

Stay Sane Managing Multiple Accounts of the Same App

Remember waiting to get a Gmail invite, or thinking carefully about what Twitter handle you wanted? These days, it seems like most of us manage too many different accounts to keep track of. I personally have nearly a dozen active email accounts, from my college and work emails to a personal Google Apps account and a standard Gmail account I mostly use for Google+. Depending on the day, I manage 3 or more Twitter accounts, 2 Facebook fan pages, and a half dozen various WordPress accounts on different sites.

Some of these aren’t so hard to manage. For example, all of my WordPress accounts are on different domains, so they’re all unique accounts that can be logged in at once. Others, such as Gmail and Twitter accounts, can be much more tricky. Here’s some of the best ways to keep track all of your accounts without spending half of your day logging in and out of various services.

Zerply: A Professional Network Based on Skills and Passions

With over 120 million members (as of 8/4/2011) and a new-member sign-up rate of two per second, LinkedIn is the undisputed leader of the “professional” social-networking scene. Still, some people have a problem with LinkedIn’s conservative design scheme. They want something that represents the excitement and passion that comes from loving what you do.

A number of web apps have cropped up to satisfy these more design-oriented folks (see our roundup of six of them), and each creates a stylish personal-splash page that you can attach to your email signature, print on your business card, or whatever.

Zerply, a new web app that launched last month, is both the same as these “personal-splash page” apps and different from them. Let’s find out how.

Best of Mac.AppStorm

jobs

5 Industries That Steve Jobs Helped Change Forever

For the second time since its inception in 1976, Steve Jobs has stepped down as CEO of Apple Inc. According to Jobs, the day has come when he can no longer fulfill his duties. He passed the reigns to Tim Cook while staying on as Chairman of the Board and Apple employee.

Today we honor our favorite turtleneck wearing tech guru with a brief look back at his amazing career and five industries that will never be the same.

windowsappstore

The Windows App Store: Serious Threat or Business As Usual?

Windows 8 will be chock full of shiny new features, among which is of course a centralized app store. Let’s put aside our feigned shock and awe at this announcement and discuss whether or not this represents a potential threat to OS X or if it’s merely the technology industry doing what it does best: following wherever Apple leads.

utilities

30+ Awesome Utilities to Boost Your Mac’s Functionality

The Mac App Store has brought about a whole mess of new utilities that make your Mac more functional than ever.
Today we’re going to dive and find thirty particularly useful utilities that you’ll definitely want to check out and consider downloading.

uipatterns

New UI Patterns in App Design: A Blessing or a Curse?

Software design has made some interesting strides lately. It’s possible that we’re beginning to see Apple’s role in setting UI standards give way to the innovation of third party developers.

Unfortunately, this shift makes for a much more complicated scenario for developers and designers. Tempers rise, fingers are pointed and even users begin arguing about the difference between inspiration and theft. When trends are set by third party designers, is it acceptable to follow them?

Share Your Ideas

Is there something in particular you’d like to see on the site next month? We’d absolutely love to hear your suggestions for articles, topics and giveaways. Just let us know in the comments. Thanks for reading AppStorm!

Quickly Transfer Photos and Videos With PhotoSync

One of the best features of the iPhone is the built-in camera, which allows you to capture photos or shoot videos quickly and conveniently. However, once you’re ready to import your photos and videos to your computer, you’ll find that the process isn’t quite as convenient. Sure, you can upload files to Dropbox or another cloud storage service, but wouldn’t it just be easier to transfer them wirelessly to your computer?

If you answered “no” to the previous question, this article may not hold much interest for you. For those that answered with an resounding “yes,” look no further than PhotoSync. PhotoSync allows you to easily transfer photos and videos wirelessly in multiple methods, which will be discussed after the jump.

Getting Started

When you fire up PhotoSync for the first time, you’ll be greeted with four pages of instructions that give you a brief overview about how the app works. Once you tap the Finish button on the last page, a grid view of your Camera Roll will appear on the screen. By default, the app will always open the Camera Roll, which can be turned off in the settings menu.

The introductory pages will provide a basic overview of the features PhotoSync offers.

The introductory pages will provide a basic overview of the features PhotoSync offers.

The grid display should be familiar to anyone that’s used the built in Photo app, as photos and videos are displayed exactly the same (with the exception of the white background that’s been swapped out for a dark grey background).

The grid view should be familiar to anyone that's used the built in Photos app.

The grid view should be familiar to anyone that's used the built in Photos app.

Transfer From iPhone to Computer/iOS Device

Before you begin transferring photos to your computer, you’ll need to download a companion application from the PhotoSync website, which is available for both Windows and Mac OS X. Once you’ve finished downloading and installing the app, you’re ready to begin transferring your photos and videos. It’s important to note that both the iPhone and computer must be connected to the same WiFi network for the transfer to work.

The Mac OS X PhotoSync companion app can be downloaded from the Mac App Store.

The Mac OS X PhotoSync companion app can be downloaded from the Mac App Store.

PhotoSync offers multiple transferring options, which are accessed by tapping the red Transfer icon in the top right corner. A new menu will pop-up, prompting you to select an action, which includes the following choices:

  • Sync New: Syncs any photos or videos that were not present in your Camera Roll from the last time you used the app.
  • Sync Selected: Syncs any photos or videos you’ve selected by tapping on the desired thumbnails.
  • Sync All: Syncs all photos or videos in your album.
  • Mark all as synced: Marks all photos and videos as having been synced previously (unsynced photos and videos are marked by a blue-green outline around the thumbnail).
  • Receive Photos/Videos: Brings up a new screen that gives you instructions on how to receive photos and videos from a computer or other iOS device.
PhotoSync offers methods of syncing photos and videos.

PhotoSync offers methods of syncing photos and videos.

Tapping one of the first three options will bring of a second menu, which lists two options — Computer and iPhone-iPod-iPad. That’s right, you not only can transfer to a computer, but also between iOS devices (as long as the PhotoSync app is installed on both devices), which can be done via WiFi and Bluetooth®. Tapping a device will bring up a third menu, which lists all available transferring devices. Select a device and the file transfer process will begin. Once it’s finished, a folder will open automatically on your computer, containing the newly transferred files.

Once you've selected which files to sync, you'll need to perform two additional steps to finish the transfer process.

Once you've selected which files to sync, you'll need to perform two additional steps to finish the transfer process.

Transfer From Computer to iPhone

Transferring from an iPhone to a computer is great, but the ability to flip it around and transfer from a computer to an iPhone is one of the best features PhotoSync offers. To transfer from a Mac OS X computer to an iPhone, select the photos or videos you want to transfer and drag the files to the PhotoSync icon in the dock. Once you release the mouse button, a window will open prompting you to select which device you’d like to transfer your files to.

Transferring photos and videos from your Mac OS X computer to your iPhone is as simple as dragging your selected files to the PhotoSync icon in the dock.

Transferring photos and videos from your Mac OS X computer to your iPhone is as simple as dragging your selected files to the PhotoSync icon in the dock.

To transfer from a Windows computer to an iPhone, select the photos and videos you want to transfer and drag the files to the PhotoSync drag and drop area in the bottom right corner of your screen.

If the drag and drop menu is not present on your desktop, right-click the PhotoSync icon in the Notification Area and click Show Drag & Drop Area.

If the drag and drop menu is not present on your desktop, right-click the PhotoSync icon in the Notification Area and click Show Drag & Drop Area.

Transfer & Upload From Web Browser

If you don’t have the ability to download the companion app, you can still upload and download photos and videos via your preferred web browser. To do so, tap the red Transfer icon and then tap Receive Photos/Videos. In the top box you’ll be provided with a web address to enter into your browser. Once you’ve entered the web address, a menu with your photo albums will appear in your browser.

Tapping the Receive Photos/Videos button in the Actions menu will take you to a screen that will provide you with a web address.

Tapping the Receive Photos/Videos button in the Actions menu will take you to a screen that will provide you with a web address.

While in an album, you can upload photos and videos by clicking the Upload button in the top navigation bar and following the on-screen prompts. To download photos and videos, click the Select button and click on the photos you wish to download (you also have the option to download all your photos and videos). Once you’ve selected your desired file, click the Download button.

If you don't have the ability to install the companion app, you still have the ability to download and upload files from your web browser.

If you don't have the ability to install the companion app, you still have the ability to download and upload files from your web browser.

Transfer Targets

PhotoSync offers the ability to send files to popular services such as Dropbox, Flickr, Facebook, Picasa, FTP and SmugMug. To set-up these options, tap the Settings icon in the bottom right corner, and then tap the Configure button. Tapping on any of the options will take you to an authorization screen, which will prompt you to enter the necessary information. The next time you go through the transfer process, your configured services will be included in the list of transfer options.

Along with syncing to a computer and other iOS devices, you have the ability to sync photos and videos to various popular web services.

Along with syncing to a computer and other iOS devices, you have the ability to sync photos and videos to various popular web services.

Quick Transfer

A very convenient feature that PhotoSync offer is Quick Transfer, which allows you to bypass the three-menu transfer process in favor of longpressing the red Transfer icon. Doing so will quickly transfer selected photos and videos to the designated Quick Transfer device.

Setting up Quick Transfer mode is highly recommended, as it shortens the normal three-step transfer passes into one easy step.

Setting up Quick Transfer mode is highly recommended, as it shortens the normal three-step transfer passes into one easy step.

To set up your desired Quick Transfer device, head to the Settings menu and tap Quick Transfer. A familiar instructional screen will appear, prompting you to tap the Configure button.
From the Target menu, you’ll need to choose if you want to set up a transfer option for a computer or an iOS device. Tapping either option will take you to a secondary menu that lists available devices.

Quicklook Mode

One final feature worth mentioning is Quicklook Mode, which allows you to view photos and videos in the same manner as the Photos app. To use Quicklook Mode, tap the Eye icon in the bottom left corner of the screen; the screen will flip and look pretty much the same as before. If you tap on a thumbnail, the screen will transition into a full-size view of the thumbnail you selected.

Similar to the built-in Photos app, you can view photos and video individually in Quicklook Mode.

Similar to the built-in Photos app, you can view photos and video individually in Quicklook Mode.

Conclusion

When it comes to transferring photos and videos to and from an iPhone, PhotoSync is unmatched in terms of usability and functionality. If the option to delete photos and videos from the Camera Roll is added, it would be without a doubt my one stop shop for photo and video management. For the low price of $1.99, PhotoSync is a must download for anyone that enjoys snapping photos or shooting video with their iPhone.

Grand Central Dispatch And Writing Methods That Accept Blocks As Arguments

Have you ever looked at the enumerateObjectsUsingBlock method of NSArray and wondered how you might use that design pattern in your own application. In this tutorial, I will be showing you how to do just this. We will be writing methods that accept blocks as arguments as well as learning how to declare block ivars and properties.

This tutorial assumes that you have at least a basic understanding of using blocks and Grand Central Dispatch (GCD). If not, @cruffenach has created a more basic intro to blocks tutorial here if you need a refresher on them.

When You Might Want To Pass A Block To A Method

There are quite a few times when you might want to pass a block to a method. The most common reason is to replace the “delegate” design pattern. Basically, when you want to process some data (usually in another thread) and it needs to call back to the caller when it completes. This pattern is also useful when you want to have a method “return” multiple values. (Note: return is in quotes, because we are not actually returning multiple values but calling back using the block and passing multiple values).

Another great reason to use blocks in this way is it keeps your code flowing in a much more logical order. Rather than having this feeling of spaghetti code with callbacks jumping all over the place, all of your callback code can be written inline with everything else.

In the following example, we are going to (asynchronously) fetch a very large array of strings (in plist form) from the web and load it up into a UITableView. We will pass a simple completion block to our array fetch method which will tell our class to reload the table.

Creating Our Dictionary Downloader Class

We’ll start by creating a new class called PListDownloader. This will contain a single method called downloadPlistForURL. Declare it like this in PListDownloader.h.

- (void) downloadPlistForURL:(NSURL *) url completionBlock:(void (^)(NSArray *data, NSError *error)) block;

Let’s break this down. First, the method is void (no return). That’s because our block will handle all of the data that this method “returns”. The first parameter is simply the URL of the plist file. In our case, we will be passing in http://www.icodeblog.com/samples/block_test/block_test.plist . This is a ~3MB plist file that should take a couple seconds to download and process.

Finally, we pass in our block. Let’s break the block down even further.

1. “(void ” The void denotes that the block doesn’t return any value.

2. “(^))” The ^ without anything next to it denotes that it’s an anonymous block. We will go over naming our blocks in a bit.

3. (NSArray *data, NSError *error)) is what will be passed back into the block when it gets called. This would be equivalent to the “return values” in this case.

4. “block” This is simply the name of our block parameter passed in. You could have named it anything really.

It’s time for the implementation of this method. In the PListDownloader.m file add the following code:

1
2
3
4
5
6
7
8
9
10
11
12
13
- (void) downloadPlistForURL:(NSURL *) url completionBlock:(void (^)(NSArray *data, NSError *error)) block {
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul), ^{
        NSArray *returnArray = [NSArray arrayWithContentsOfURL:url];
        if(returnArray) {
            block(returnArray, nil);
        } else {
            NSError *error = [NSError errorWithDomain:@"plist_download_error" code:1 
                                             userInfo:[NSDictionary dictionaryWithObject:@"Can't fetch data" forKey:NSLocalizedDescriptionKey]];
            block(nil, error);
        }
 
    });
}

At first glance, one might argue that this looks “sloppier” than the delegate style. Simply because it uses nested blocks. I can assure you this is much cleaner AND simpler. For one, by using GCD you no longer have to worry about creating auto release pools.

So, there’s quite a bit going on here, let’s break it down line by line.

2. This is the Grand Central Dispatch way of firing off a code segment inside of a new thread. Basically we are executing this code on a new thread with a priority of HIGH. You can use this first parameter to prioritize the execution of multiple threads. For example say you are running 2 concurrent threads (one to download user data, the other to download the avatar). You can assign the user data thread higher priority than the avatar thread. The system will handle the rest.

**Note: Using Blocks here replaces the delgate method style of performSelectorInBackground

3. This is a very simple line to download plist data from a URL into an NSArray. There is no error checking or anything fancy. In production, you would want to use NSURLConnection or a lib built on top of it like ASIHTTPRequest.

4. Very simple error check, basically seeing if there was any data downloaded.

5. This is where the magic happens. We call this block as a simple function call passing in our returned array and nil for the error (nil since there was no error).

6-11. This segment handles our error case. If for some reason, no data was downloaded, we create our own NSError object and pass it into the exact same block as in line 5. The only difference is we pass in nil for the results and our error for the NSError object.

Before you gripe in the comments “You could have just done that async call in your main class…blah…blah…”, know that I know this. However, this is just a trivial example. Often times you might have a much larger codebase built up that does more than downloads a stupid plist. Perhaps you have a ton of preprocessing of the url or post-processing of the data. Then it starts to make less and less sense to put this code in your main implementation file.

Also, you might need to download plist files in various parts of the application and do different things with the data that was returned.

Calling A Method With A Block

So, now we have our simple class to download our plist and return the data in a block. But, how do we use it?

Let me give you a bit of context about my sample application first. I have a basic “Navigation Based” project with a NSArray property called pListData. I am displaying the contents of pListData in the UITableView. So, I want to download the plist data from the web, set it to my pListData property and reload my table.

First import the PListDownloader class and then uncomment the viewDidLoad method adding the following code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- (void)viewDidLoad {
    [super viewDidLoad];
    PListDownloader *downloader = [[[PListDownloader alloc] init] autorelease];
    NSURL *url = [NSURL URLWithString:@"http://www.icodeblog.com/samples/block_test/block_test.plist"];
    [downloader downloadPlistForURL:url completionBlock:^(NSArray *data, NSError *error) {
        self.plistData = data;
        if(!error) {
            dispatch_sync(dispatch_get_main_queue(), ^(void) {
                [self.tableView reloadData];
            });
        } else {
            NSLog(@"error %@", error);
        }
    }];
}

Again, let’s take a look at it line by line.

3. This should be familiar, we create a new instance of PListDownloader. One thing to note here is we are able to set it to autorelease. It won’t be released until AFTER the execution finishes and the thread dies. This is a HUGE improvement over the async delegate model where you would have to keep a property laying around.

4. Simply creating an NSURL object using the string location of our test plist (it’s still there, you can test with it)

5. This is where we actually call our downloadPListForURL method. The first parameter is the easy one, just the URL you created on line 4. The second is the the block that the method will call back to when execution finishes. Luckily XCode will auto complete a nice template for us.

6. Once the method calls back and contains an array of strings, we set our property (pListData) to the returned array. This will allow use to actually do something with the data.

7. Our simple error check

8. It’s going to get crazy again. Since we used GCD to run our code in a separate thread, we need a way to come back to the main thread to update the UI. If you are reading this and don’t know that you do all UI manipulations in the main thread, then I suggest you start following my “Back To Basics” tutorial series.

9. Now that we are in the context of the main thread, we can simply reload the tableview.

Now, when you run this application, it should take quite some time to fetch that data (3MB). But, you will have complete control over the UI while it’s fetch in the background. You could even throw up a little loading message if you so choose.

For completeness, here is a look at what this application produces.

 

As this post has gotten a little longer than I anticipated, I’ll save the part about declaring blocks as properties until next time. If you have any questions or comments, feel free to leave them in the comments of this post (or write them to me on Twitter).

You can download the source for this tutorial here.

Happy iCoding!

How to Search option enable in TableView in iPhone

This is very simple SearchBar Application.In this application we will see how to SearchBar implement in the TableView
and the code. So let see how it will worked.

Step 1: Open the Xcode, Create a new project using Navigation Base application. Give the application “SearchBar”.

Step 2: Xcode automatically creates the directory structure and adds essential frameworks to it. You can explore the
directory structure to check out the content of the directory.

Step 3: Expand classes and notice Interface Builder created the RootViewController class for you. Expand Resources and
notice the template generated a separate nib, RootViewController.xib for the SearchBar application.

Step 4: We need to add one UIViewcontrollersub class in the application. Select New File -> Cocoa Touch -> select
UIViewcontrollersub. Give the class name”SearchView”.

Step 5: Open the RootViewController.h file and make the following changes in the file:

#import <UIKit/UIKit.h>
@interface RootViewController : UITableViewController {
NSMutableArray *data;
NSMutableArray *Listdata;
IBOutlet UISearchBar *searchBar;
BOOL search;
BOOL Rowselect;
}
– (void) search;
– (void) doneButtonClicked:(id)sender;
@end

Step 6: Double click the RootViewController.xib file and open it to the Interface Builder. First drag SearchBar from the
library and place it to the View window. Select SearchBar from the interface builder and bring up Connection
Inspector,connect delegate to file’s owner icon and File’s Owner icon to SearchBar and select “searchBar”. Now save
the .xib file save it, close it and go back to the Xcode.

Step 7: In the RootViewController.m file make the following changes in the file,

#import "RootViewController.h"
@implementation RootViewController
– (void)viewDidLoad
{
[super viewDidLoad];
data = [[NSMutableArray alloc] init];
NSArray *NameArray = [NSArray arrayWithObjects:@"Ambalika", @"Arti", @"Arun", @"Balen",
@"Chandrani", @"Chandrika", @"Deepak", @"Dilip",@"Emran",@"Era", nil];
NSDictionary *NameArrayInDict = [NSDictionary dictionaryWithObject:NameArray forKey:@"Names"];
[data addObject:NameArrayInDict];
Listdata = [[NSMutableArray alloc] init];
self.navigationItem.title =@" Names ";
self.tableView.tableHeaderView = searchBar;
searchBar.autocorrectionType = UITextAutocorrectionTypeNo;
search = NO;
Rowselect = YES;
}
#pragma mark Table view methods
– (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
if (search)
return 1;
else
return [data count];
}
// Customize the number of rows in the table view.
– (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (search)
return [Listdata count];
else {
NSDictionary *dictionary = [data objectAtIndex:section];
NSArray *array = [dictionary objectForKey:@"Names"];
return [array count];
}
}
– (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
if(search)
return @"Search Results";
if(section == 0)
return @"Search Names";
}
– (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title
atIndex:(NSInteger)index {
if(search)
return –1;
return index % 2;
}
– (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)
indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier]
autorelease];
}
if(search)
cell.textLabel.text = [Listdata objectAtIndex:indexPath.row];
else {
NSDictionary *dictionary = [data objectAtIndex:indexPath.section];
NSArray *array = [dictionary objectForKey:@"Names"];
NSString *cellValue = [array objectAtIndex:indexPath.row];
cell.textLabel.text = cellValue;
}
return cell;
}
– (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *selectedCountry = nil;
if(search)
selectedCountry = [Listdata objectAtIndex:indexPath.row];
else
{
NSDictionary *dictionary = [data objectAtIndex:indexPath.section];
NSArray *array = [dictionary objectForKey:@"Names"];
selectedCountry = [array objectAtIndex:indexPath.row];
}
}
– (NSIndexPath *)tableView :(UITableView *)theTableView willSelectRowAtIndexPath:(NSIndexPath *)
indexPath {
if(Rowselect)
return indexPath;
else
return nil;
}
– (UITableViewCellAccessoryType)tableView:(UITableView *)tableView
accessoryTypeForRowWithIndexPath:(NSIndexPath *)indexPath
{
return UITableViewCellAccessoryDisclosureIndicator;
}
– (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath
*)indexPath
{
[self tableView:tableView didSelectRowAtIndexPath:indexPath];
}
#pragma mark –
#pragma mark Search Bar
– (void) searchBarTextDidBeginEditing:(UISearchBar *)theSearchBar {
if(search)
return;
search = YES;
Rowselect = NO;
self.tableView.scrollEnabled = NO;
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemDone
target:self action:@selector(DoneButton:)]
autorelease];
}
– (void)searchBar:(UISearchBar *)theSearchBar textDidChange:(NSString *)searchText {
[Listdata removeAllObjects];
if([searchText length] > 0) {
search = YES;
Rowselect = YES;
self.tableView.scrollEnabled = YES;
[self search];
}
else {
search = NO;
Rowselect = NO;
self.tableView.scrollEnabled = NO;
}
[self.tableView reloadData];
}
– (void) searchBarSearchButtonClicked:(UISearchBar *)theSearchBar
{
[self search];
}
– (void) search {
NSString *searchText = searchBar.text;
NSMutableArray *searchArray = [[NSMutableArray alloc] init];
for (NSDictionary *dictionary in data)
{
NSArray *array = [dictionary objectForKey:@"Names"];
[searchArray addObjectsFromArray:array];
}
for (NSString *sTemp in searchArray)
{
NSRange titleResultsRange = [sTemp rangeOfString:searchText
options:NSCaseInsensitiveSearch];
if (titleResultsRange.length > 0)
[Listdata addObject:sTemp];
}
[searchArray release];
searchArray = nil;
}
– (void) DoneButton:(id)sender {
searchBar.text = @"";
[searchBar resignFirstResponder];
Rowselect = YES;
search = NO;
self.navigationItem.rightBarButtonItem = nil;
self.tableView.scrollEnabled = YES;
[self.tableView reloadData];
}
– (void)dealloc
{
[Listdata release];
[searchBar release];
[data release];
[super dealloc];
}
@end

Step 8: Open the SearchView.h file and make the following changes in the file:

#import <UIKit/UIKit.h>
@class RootViewController;
@interface SearchView : UIViewController {
RootViewController *rootController;
}
@property (nonatomic, retain) RootViewController *rootController;
@end

Step 9: In the SearchView.m file make the following changes:

#import "SearchView.h"
#import "RootViewController.h"
@implementation SearchView
@synthesize rootController;
– (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[rootController doneButtonClicked:nil];
}
– (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
}
return self;
}
– (void)dealloc
{
[super dealloc];
[rootController release];
}
– (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
#pragma mark – View lifecycle
– (void)viewDidLoad
{
[super viewDidLoad];
}
– (void)viewDidUnload
{
[super viewDidUnload];
}
– (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end

Step 10: Now Compile and run the application in the Simulator.

You can Download SourceCode from here Search Bar Source Code.

Daily iPhone App: DrawRace 2

I got to see DrawRace 2 in action back at GDC this year, and it’s a wild one. The title is a racing game at heart, but it plays unlike any racing game you’ve ever seen: Instead of driving the car around the track, you actually just draw a path around, dictating where the car will go, when it will turn, and how fast it should move. You have to still use the same rules as driving, however, as you push your finger around. Move too fast in the straights, and the car will spin out when you try to go around a curve. Or hit the side of the track accidentally, and you’ll lose time in the race.

It’s a weird concept, but the execution makes it work anyway. The sound is particularly notable — as you guide your finger around the track, you can hear the tires squeal and the engine growl, so the experience is very much like actual driving.

Fortunately, at just US 99 cents, it’s not a big risk to download the app and see what it’s like. Chillingo is publishing this RedLynx-developed title (RedLynx also worked on the popular Trials HD game on Xbox 360), so there’s Game Center support, lots of content and challenges to play through, and plenty of the polish that the publisher is known for. If you like driving or racing games, or just want to try out this crazy interface, definitely give DrawRace 2 a look.

Daily iPhone App: DrawRace 2 originally appeared on TUAW – The Unofficial Apple Weblog on Fri, 02 Sep 2011 08:00:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

You’re the Pundit: What’s the Apple "Product Transition" going to be?

Other sites have rumors. We have the TUAW braintrust. We put the question to you and let you have your go at it. Today’s topic is Apple’s mysterious fall “product transition.”

During Apple’s Q3 Financials, Peter Oppenheimer mentioned an upcoming product transition due to take place this autumn. Without giving specific details, Oppenheimer hinted that it could impact earnings. So what is this “future product transition that we will not talk about today” that will affect the fall quarter?

You tell us. Place your vote in this poll and then join in the comments with all your predictions.

View Poll

You’re the Pundit: What’s the Apple “Product Transition” going to be? originally appeared on TUAW – The Unofficial Apple Weblog on Thu, 01 Sep 2011 21:00:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

Dreamworks animated films now available on iTunes

After quite a wait, Dreamworks Animation has finally relented to allowing its movies on iTunes, which means the company’s catalog is more or less up for grabs. Kung Fu Panda is one title customers have been waiting for, and Monsters vs. Aliens, Bee Movie, and Madagascar 2 are available as well. Shrek the Third is the only movie of that series available at the moment, unfortunately, and there’s no sign of Megamind or How to Train Your Dragon, so the catalog isn’t complete by any means.

Still, progress is progress, and this deal means you and your kids have a few more options when you jump into iTunes to find a movie to watch. Whatever issues there were between Dreamworks and Apple have apparently been worked out, to some degree at least.

Dreamworks animated films now available on iTunes originally appeared on TUAW – The Unofficial Apple Weblog on Thu, 01 Sep 2011 20:15:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

Final Cut Studio back on sale, Final Cut Pro X haters rejoice (Updated)

Update: Apple tells The Loop that this is basically leftover stock. So, buy it now or forever enjoy the progress of FCP X, for better or worse.

For those users who’ve decided Final Cut Pro X just isn’t for them (and by the sounds of things, quite a lot of people feel that way), there’s now hope. According to MacRumors, Apple is once again offering the legacy version of Final Cut Studio for sale, though Apple is being remarkably coy about it. The software suite isn’t available on Apple’s site or in its retail stores; reportedly the only way to order Final Cut Studio is by calling 800-MY-APPLE and requesting it.

Final Cut Studio is available for US$999 ($899 with an educational discount) and includes Final Cut Pro 7, Motion 4, Soundtrack Pro 3, DVD Studio Pro 4, Color 1.5 and Compressor 3.5. Over the past few months professional users have voiced their displeasure with Final Cut Studio’s abrupt discontinuation after Final Cut Pro X’s debut, particularly given that many users feel the new version of Final Cut does not meet their needs.

There’s no indication how long Apple intends to keep the old version of Final Cut Studio alive and kicking, so if you’ve found Final Cut Pro X doesn’t suit you, you might want to jump on Final Cut Studio (if you haven’t already) before Apple changes its mind again.

Final Cut Studio back on sale, Final Cut Pro X haters rejoice (Updated) originally appeared on TUAW – The Unofficial Apple Weblog on Thu, 01 Sep 2011 19:30:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments