Saturday, June 22, 2013

Play system sound in iOS

Playing the system sound in iOS is quite easy.

  • Create a project and add AudioToolbox.framework reference. 
  • To play the system sound, call AudioServicesPlaySystemSound(1104) where "1104" is the system sound ID.
  • For the complete list of system sound, you may refers to http://iphonedevwiki.net/index.php/AudioServices
You might found the following sample code (somewhere in the Internet) which load the "Tock" sound from the system resources and plays it. But, the following code might not play the sound because you should not call "dispose" function immediately after "play" function as the play function will take some time to execute the "playing" process. This results in the soundID has been disposed/reset before it has been played. The correct way is to call the dispose function when you are unloading the view or app.

     NSString *path = [[NSBundle bundleWithIdentifier:@"com.apple.UIKit"] pathForResource:@"Tock" ofType:@"aiff"];
    
    SystemSoundID soundID;
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &soundID);
    AudioServicesPlaySystemSound(soundID);

    AudioServicesDisposeSystemSoundID(soundID);

Sunday, June 16, 2013

Shorthand to initialize NSDictionary

We use to initialize the NSDictionary variable like this:


        NSDictionary* f =[NSDictionary dictionaryWithObjectsAndKeys:@"a", @"CODE", nil];

Instead, you can write your code like this:
   
        NSDictionary* f =@{@"CODE": @"a"};

Note: don't forget the the key & value position in the above codes located differently.

Wednesday, June 12, 2013

Section in UITableViewController

In table view, you may create sections to group the cells. To do this, just follow the settings below:


UITableViewController settings

Declare a class that inherits from UITableViewCell and add a UILabel outlet. In CMyCell class, you may write some customized code. For example, when the view controller passing the data to the cell, the cell will display different controls based on the data.


Then, switch to the Storyboard, choose the"cell view" and set it's class name to "CMyCell".



Drag the label control to the "mainLabel" as shown below:



Sunday, June 2, 2013

Add the shared library into the workspace

As you are working on more and more project, you might wonder how to share the codes among these projects without have to copy the same class files. This can be done by creating a project with all your shared codes. Then, follow the steps below to add the shared project into the new project that you are working on.

Step 1: make sure that you have created a workspace in your project. This can be done by selecting Save As Workspace from File menu.

Step 2: right click on the project that you are working on and choose 'Add Files to "xxx"'. You will have to choose the "xxx.xcodeproj" file from the Finder.


Step 3: open up the project settings and goto Summary tab. Click on the "+" button as shown below.


Step 4: Choose your shared library from the Workspace.


Step 5: goto Buil Settings tab and search for "linker". Key in "-ObjC".


Step 6: You may continue to add new project references. Once you have done it, you might have to regroup the references into Frameworks. This step is optional.


Step 7: Finally, to use the classes that you have done in the shared project, you have to add the source code reference path. Goto Build Settings, search "search" text. Then, key in the shared project source code path in the "User Header Search Paths".