<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Squarespace Site Server v5.11.81 (http://www.squarespace.com/) on Tue, 14 Feb 2012 10:48:22 GMT--><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rss="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:cc="http://web.resource.org/cc/"><rss:channel rdf:about="http://www.agilitesoftware.com/blog/"><rss:title>Blog</rss:title><rss:link>http://www.agilitesoftware.com/blog/</rss:link><rss:description></rss:description><dc:language>en-US</dc:language><dc:date>2012-02-14T10:48:22Z</dc:date><admin:generatorAgent rdf:resource="http://www.squarespace.com/">Squarespace Site Server v5.11.81 (http://www.squarespace.com/)</admin:generatorAgent><rss:items><rdf:Seq><rdf:li rdf:resource="http://www.agilitesoftware.com/blog/2011/10/5/rip-steve-jobs-we-will-miss-you.html"/><rdf:li rdf:resource="http://www.agilitesoftware.com/blog/2011/9/10/my-experience-authoring-an-open-source-project-on-github.html"/><rdf:li rdf:resource="http://www.agilitesoftware.com/blog/2011/8/1/5-reasons-why-to-switch-to-git.html"/><rdf:li rdf:resource="http://www.agilitesoftware.com/blog/2010/1/16/progress-made-to-the-augmented-reality-toolkit-now-a-static.html"/><rdf:li rdf:resource="http://www.agilitesoftware.com/blog/2009/12/29/augmented-reality-toolkit-for-the-iphone-on-github.html"/><rdf:li rdf:resource="http://www.agilitesoftware.com/blog/2009/9/30/xcode-32-the-new-find-redesign.html"/><rdf:li rdf:resource="http://www.agilitesoftware.com/blog/2009/9/28/dismissing-the-iphone-keyboard.html"/><rdf:li rdf:resource="http://www.agilitesoftware.com/blog/2009/9/28/iphone-tableview-swiping-a-cell-to-delete.html"/><rdf:li rdf:resource="http://www.agilitesoftware.com/blog/2009/9/28/xcode-tip-column-mode-text-selecting.html"/><rdf:li rdf:resource="http://www.agilitesoftware.com/blog/2009/9/28/developing-under-osx-106-and-xcode-32.html"/></rdf:Seq></rss:items></rss:channel><rss:item rdf:about="http://www.agilitesoftware.com/blog/2011/10/5/rip-steve-jobs-we-will-miss-you.html"><rss:title>RIP Steve Jobs! We will miss you!</rss:title><rss:link>http://www.agilitesoftware.com/blog/2011/10/5/rip-steve-jobs-we-will-miss-you.html</rss:link><dc:creator>Niels Hansen</dc:creator><dc:date>2011-10-06T00:09:51Z</dc:date><dc:subject>Apple Steve Jobs iPhone</dc:subject><content:encoded><![CDATA[<p><span class="full-image-block ssNonEditable"><span><img src="http://www.agilitesoftware.com/storage/Screen shot 2011-10-05 at 5.07.06 PM.png?__SQUARESPACE_CACHEVERSION=1317859851712" alt="" /></span></span></p>]]></content:encoded></rss:item><rss:item rdf:about="http://www.agilitesoftware.com/blog/2011/9/10/my-experience-authoring-an-open-source-project-on-github.html"><rss:title>My Experience authoring an open source project on github</rss:title><rss:link>http://www.agilitesoftware.com/blog/2011/9/10/my-experience-authoring-an-open-source-project-on-github.html</rss:link><dc:creator>Niels Hansen</dc:creator><dc:date>2011-09-10T19:46:10Z</dc:date><dc:subject>AR Development Git augmented reality github iPhone open source</dc:subject><content:encoded><![CDATA[<p><span class="full-image-float-right ssNonEditable"><span><img style="width: 150px;" src="http://www.agilitesoftware.com/storage/logov6-hover.png?__SQUARESPACE_CACHEVERSION=1315688418775" alt="" /></span></span>If you are an active reader of the blog here, you know that I have participated in an open source project on <a href="https://github.com/nielswh/iPhone-AR-Toolkit">Github</a>.  It was way back in late 2009 that I found an Augmented Reality project there.  At the time this was the up and up and AR was just starting to take off on the iPhone. However there was one same problem; the author who begun the project, started developing and then abandoned the code.</p>
<p>Github has a great feature (and bad, that I'll discuss here) to fork a project.   So the fun began, I forked the project, cleaned up a ton of code, made the project more of a tool kit and finally got the code working the way I thought it should.  All was good.  However, the toolkit was far from done. I had big dreams of really making this in into the toolkit thousands of developers would use.  I even created it as a static library that could be linked easily into other developers projects.</p>
<p>Right about at this time, as human as we all are, I was going thru a life changing event (a divorce).  Needless to say I was not able to work on the project as much as I would have liked (none at all actually).  During this time, a few people had forked the project and began making their own changes.  That's the beauty of github.  If you don't like what you see, you can fork it and begin making your own changes. Hopefully the changes made are good enough the project that it's forked from will pull this code into their branch.  It's a win win for everyone.</p>
<p>Since I no longer had the time to make all the changes on my own, I was able to merge the code that others had made, which in turn made the toolkit even better!  This is the the beauty and the beast of Open Source.</p>
<p>Let's go over what I've learned.</p>
<h2>The Good</h2>
<p><span class="full-image-float-left ssNonEditable"><span><img src="http://www.agilitesoftware.com/storage/good.png?__SQUARESPACE_CACHEVERSION=1315688362591" alt="" /></span></span>While I was not able to work on the code, others had stepped up.  A couple found some memory leaks and fixed them.  That was awesome.</p>
<p>Another developer decided that maybe using a static library was not the best idea, since many people found it confusing. So he moved it out of the library and back into the main project.  Great!  The toolkit still had life.</p>
<p>Github can merge other people's code back into a branch as long as the changes are not too drastic.  At this point pretty much all the changes other's had made could be merged with no effort on my end.  So why not include the changes? We had my fork of the project going still strong and in many ways I was still in control. (Even when I was not really working on it.) However, I still had the final say that would be merged into my code base.  All was good! Or least I thought it was...</p>
<h2>The Bad</h2>
<p><span class="full-image-float-right ssNonEditable"><span><img src="http://www.agilitesoftware.com/storage/bad.png?__SQUARESPACE_CACHEVERSION=1315688328078" alt="" /></span></span>At this point, the project was stale.  I was not checking on the updates, nor even responding to the emails from people who needed help or had suggestions to make it beter. (Sorry guys).  There were still forks of the project going on.  However it was not from my project, but from others whom had forked my toolkit.  By the time I gotten back into having some free time to review the changes again, the project was a complete mess.  We had way too many forked versions and some really bad versions began to popup.</p>
<p>To make matters worse, I had developed the toolkit for the iPhone 3 and now iOS4 was out with major changes to the framework. The project was in a deep pile of crap as I'd like to say.</p>
<h2>The Ugly</h2>
<p><span class="full-image-float-left ssNonEditable"><span><img src="http://www.agilitesoftware.com/storage/ugly.png?__SQUARESPACE_CACHEVERSION=1315688300657" alt="" /></span></span>This is where it really gets bad.  One of the forks was created from someone who had the best intentions but I seriously judge the changes they were making. I don't think they really knew what they were doing.</p>
<p>Since I was not maintaining my project, this fork now became the fork that people were using because it seemed to be the most active. (I would have done the same) With this version, many bugs were introduced and people were making changes to the code base that made life very difficult to merge back to mine.</p>
<p>I began getting emails from people asking if I could fix my version of the project (code did break with iOS 4) because the other forked projects were so unstable. I became to feel their pain.  It's time to get back into the game again...</p>
<h2><br />A New Hope</h2>
<p>Yesterday I finally got some free time and went thru all my issues and began to fix the problems that others had found.  I fixed the code so that it would run in xCode 4.2 and run on the iPhone 4.  I also reviewed some changes that were made by other forks that I thought were good and added them to the toolkit.  Someone even created the app Icon, so I grab that and added it too. Thank you by the way!</p>
<p>Now I have the project updated and I hope people can grab this version and begin using the AR toolkit again.  I'm so excited about the project again that I plan on making some new code updates to make the toolkit even better!</p>
<p>As you can see, this seems to be the typical problem that happens with an open source project.  If there's no one core owner to keep the dream alive, or the wrong people take over, a project can go sideways pretty quickly.  I'm glad to be back, I'm grateful for the people who were able to contribute the changes to what I believe to be a good learning tool in the world of Augmented Reality!</p>
<p>Thanks to all the people who kept it going!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded></rss:item><rss:item rdf:about="http://www.agilitesoftware.com/blog/2011/8/1/5-reasons-why-to-switch-to-git.html"><rss:title>5 Reasons why to switch to Git</rss:title><rss:link>http://www.agilitesoftware.com/blog/2011/8/1/5-reasons-why-to-switch-to-git.html</rss:link><dc:creator>Niels Hansen</dc:creator><dc:date>2011-08-01T21:00:00Z</dc:date><dc:subject>Development Git git github subversion svn</dc:subject><content:encoded><![CDATA[<p>I'm going to predict that 2010 is the year where <a href="http://git-scm.com/" target="_blank">Git</a> becomes the defacto version control for most open source projects.  I also think Git will see a wide spread use from corporations but not as fast because of the slow adoption of anything new.  If you've not heard of Git, I strongly suggest to check it out.  I was skeptical myself.  I had just moved over to Subversion a few years ago from CVS and that  from Visual Source Safe.  The last thing I wanted to do was learn another version control and SVN seemed to do the job.  That was until over the winter break I was looking for a project on GitHub and needed to use Git to download the source code.  I instantly fell in love with it.  All the things I loved about SVN it seemed to do better and all the problems of SVN seem to have been solved!  <strong><span style="color: #003366;">Reason's why to start using Git</span></strong></p>
<h3>#1 Local Repository features</h3>
<p>The one advantage Git has over other repositories is how much you can actually do on the local version.  Besides doing a fetch, push or a pull, most commands are done locally. The ability to do a diff locally without hitting the server can save a ton of time.</p>
<p>&nbsp;</p>
<p>One feature I like is creating local branches that I can do all my work on and not have the fear of messing up the remote repository with my changes because I committed the changes.  Now I can work locally, make as many commits as I need to and if I have to rollback I can do so with no worries.  Once I have the version that is what I feel is good for everyone on the team to use, I can simply commit to the remote repository.  <span class="full-image-block ssNonEditable"><span><a href="http://svn.agilitesoftware.com/imgs/Screen-shot-2010-01-17-at-4.27.22-PM.png"><img src="http://svn.agilitesoftware.com/imgs/Screen-shot-2010-01-17-at-4.27.22-PM-1024x571.png?__SQUARESPACE_CACHEVERSION=1263787027824" alt="" /></a></span></span></p>
<h3>#2 The staging area</h3>
<p>The staging area is a great idea.  Sometimes you have code that you're not quiet sure you want to commit but you want to store it in a place while you continue to work on the file.  If the changes made in working directory have gone 180 on you still have the code in the staging area.  However, If  satisfied with the new code, simply add the code to the staging area again.  Then use the commit command and the code is moved from staging  to the local repository.</p>
<p>The main advantage of using the staging area is that when committing to the repository only the files ready to be committed are actually added. This avoids accidentally sending files in the working directory that may not be ready.  <a href="http://svn.agilitesoftware.com/imgs/Screen-shot-2010-01-17-at-4.41.26-PM.png"><img class="alignnone size-full wp-image-366" title="Screen shot 2010-01-17 at 4.41.26 PM" src="http://svn.agilitesoftware.com/imgs/Screen-shot-2010-01-17-at-4.41.26-PM.png" alt="" width="609" height="264" /></a> Git does not force the developer to have to use the staging feature. Directly going from the working directory to the local repository can be done by adding the -a option when issuing the commit command.  However, remember that using the -a argument of the commit command, sends all the modified files that were added previously to the local repository.  <a href="http://svn.agilitesoftware.com/imgs/Screen-shot-2010-01-17-at-4.44.58-PM.png"><img class="size-full wp-image-367 alignnone" title="Screen shot 2010-01-17 at 4.44.58 PM" src="http://svn.agilitesoftware.com/imgs/Screen-shot-2010-01-17-at-4.44.58-PM.png" alt="" width="613" height="247" /></a> This has been a hard habit to break for myself since I'm so used to the way SVN handles commits, that I was using the commit command with the -a option.  Now what I know of the advantages of  staging, I can avoid these problems I've had in the past.</p>
<h3>#3 Local Branching is super easy</h3>
<p>Local branching allows for the developer to create as many branches without having to have them stored on the the remote repository!  Keep one(1) branch for production, one (1) for development where to do all work in, and then other branches for experimental work.</p>
<p>The beauty is that switching between branches is as quick as typing the branch name.  Simply type <strong><em>git checkout &lt;Your Branch Name&gt;</em></strong> and the working directory has switched over to the selected branch.  It's very easy to then merge changes from each branch.  Again this is all done locally.  These branches can stay local or any branch can be added to the remote repository.</p>
<h3>#4 Cloning a remote Repository gives you the entire repository!</h3>
<p>When cloning from remote repository,   a complete copy is added to the local repository, not the current version like how Subversion handles it. This alone has many advantages. If working offline because the internet connection is down, or on a train or plane, the entire repository is still available for all the features normally found only when making calls back to the remote repository.  The ability to continue to make commits when offline is a huge deal!  Commit the changes later when back online!</p>
<h3>#5 Github.com rocks</h3>
<p>There is no better place to host open source or host your private repositories than <a href="http://www.github.com" target="_blank">Github</a>!  Github has a great set of features that are simply amazing.  Open source projects are free but to host a private repository will cost a few bucks a month.  The prices are cheap and offer so many features that's its a no brainer to use them to host your projects!</p>
<h3>Summary</h3>
<p>I love SVN but when something better comes along that you can't simply ignore it because your comfortable with something else.  I'll still have to use Subversion for some of my older projects, but from now on, all new projects will be using Git and Github.com.  Sorry Subversion but it's time we parted our ways! :)</p>]]></content:encoded></rss:item><rss:item rdf:about="http://www.agilitesoftware.com/blog/2010/1/16/progress-made-to-the-augmented-reality-toolkit-now-a-static.html"><rss:title>Progress made to the Augmented Reality Toolkit. Now a static library!</rss:title><rss:link>http://www.agilitesoftware.com/blog/2010/1/16/progress-made-to-the-augmented-reality-toolkit-now-a-static.html</rss:link><dc:creator>Niels Hansen</dc:creator><dc:date>2010-01-17T01:35:42Z</dc:date><dc:subject>Development augmented reality augmented reality github iPhone iPhone</dc:subject><content:encoded><![CDATA[The Augment Reality Toolkit has made some good progress this week with the fixes coming to the orientations, scaling and adding the main functionality to a static library.]]></content:encoded></rss:item><rss:item rdf:about="http://www.agilitesoftware.com/blog/2009/12/29/augmented-reality-toolkit-for-the-iphone-on-github.html"><rss:title>Augmented Reality Toolkit for the iPhone on GitHub</rss:title><rss:link>http://www.agilitesoftware.com/blog/2009/12/29/augmented-reality-toolkit-for-the-iphone-on-github.html</rss:link><dc:creator>Niels Hansen</dc:creator><dc:date>2009-12-29T17:52:59Z</dc:date><dc:subject>Cocoa Development augmented reality github iPhone iPhone</dc:subject><content:encoded><![CDATA[iPhone Toolkit for Augmented Reality projects]]></content:encoded></rss:item><rss:item rdf:about="http://www.agilitesoftware.com/blog/2009/9/30/xcode-32-the-new-find-redesign.html"><rss:title>Xcode 3.2: The New Find Redesign</rss:title><rss:link>http://www.agilitesoftware.com/blog/2009/9/30/xcode-32-the-new-find-redesign.html</rss:link><dc:creator>Niels Hansen</dc:creator><dc:date>2009-09-30T22:30:17Z</dc:date><dc:subject>Apple Development Development xCode</dc:subject><content:encoded><![CDATA[<p>One of the things that have driven me bad about Xcode was the Find dialog. &nbsp;I've always felt that the find dialog got in the way and there was no way to dock to the IDE. &nbsp;</p>
<p>Well I was pleasantly surprised to find out that when I starting using Xcode 3.2 and clicked Cmd + F to bring up the find dialog, that it did not pop up the old dialog but instead a docked version of it appeared in the IDE! &nbsp;If you've used Safari, you know what I'm talking about. &nbsp;It now expands &nbsp;above the editor.</p>
<p>Here is a screen shot of my Editor before I did a find.</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://www.agilitesoftware.com/storage/Screen shot 2009-09-30 at 3.25.57 PM.png?__SQUARESPACE_CACHEVERSION=1254350360366" alt="" /></span></span></p>
<p>This is is what it looks like after I did a find:</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://www.agilitesoftware.com/storage/Screen shot 2009-09-30 at 3.40.15 PM.png?__SQUARESPACE_CACHEVERSION=1254350472774" alt="" /></span></span></p>
<p>Now what's cool is that when you enter the word your'e looking for, they are all highlighted and the first one found is highlighted in yellow.</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://www.agilitesoftware.com/storage/Screen shot 2009-09-30 at 3.26.38 PM.png?__SQUARESPACE_CACHEVERSION=1254350547653" alt="" /></span></span></p>
<p>As you can see above, all the matches are highlighted. &nbsp;Now if you want to cycle between all of the found results, you can either click the arrow buttons or CMD + G to find the next result.&nbsp;</p>
<p>Not a huge deal but this new update makes it feel like the rest of the Mac applications in Snow Leopard. I also believe this increases my productivity because I'm not messing with the dialog box, I can instantly see how many results were found!</p>]]></content:encoded></rss:item><rss:item rdf:about="http://www.agilitesoftware.com/blog/2009/9/28/dismissing-the-iphone-keyboard.html"><rss:title>Dismissing the iPhone Keyboard</rss:title><rss:link>http://www.agilitesoftware.com/blog/2009/9/28/dismissing-the-iphone-keyboard.html</rss:link><dc:creator>Niels Hansen</dc:creator><dc:date>2009-09-28T20:42:39Z</dc:date><dc:subject>Development Development iPhone iPhone xCode</dc:subject><content:encoded><![CDATA[<p>For some reason a simple task like dismissing the keyboard for the iPhone can cause one to pull their hair out because it just will not work. There are a couple of key points to remember. The number #1 part developers forget to set is the <strong>delegate</strong> of the textField. If you're using the Interface Builder, remember to set the delegate of the textField to the File Owner.</p>
<p>&nbsp;</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://svn.agilitesoftware.com/imgs/delegate.png?__SQUARESPACE_CACHEVERSION=1270771703721" alt="" /></span></span></p>
<p>&nbsp;</p>
<p>&nbsp;If you're not using Interface Builder, then make sure to set the delegate of the textfield to <strong>self</strong>. I also include the returnType. For example, if the textField was called gameField:</p>
<div class="csharpcode">
<pre class="alt">gameField.<span class="kwrd">delegate</span> = <span class="kwrd">self</span>;</pre>
<pre>gameField.returnType = <span class="kwrd">UIReturnKeyDone</span>;</pre>
</div>
<p><strong>&nbsp;</strong></p>
<p><strong>Implement the UITextFieldDelegate</strong> Implement the <strong>UITextFieldDelegate</strong> for the <em>ViewController</em> is required.</p>
<div class="csharpcode">
<pre class="alt">@<span class="kwrd">interface</span> YourViewController : UIViewController &lt;<span class="kwrd">UITextFieldDelegate</span>&gt;</pre>
</div>
<p>Finally, implement the <strong>textFieldShouldReturn</strong> method and call <strong>[textField resignFirstResponder]</strong></p>
<pre class="csharpcode">- (BOOL)textFieldShouldReturn:(UITextField *)textField {{
     [textField <span class="kwrd">resignFirstResponder</span>];
     <span class="kwrd">return</span> YES;
}</pre>
<p>&nbsp;</p>
<p>All the textFields will use this same method, so this only needs to be setup once. Make sure the delegate is set for the textField and the <em>UITextFieldDelegate</em> is implemented for the interface. Finally, add the <em>textFieldShouldReturn</em> method and call the <em>resignFirstResponder</em> . That's it! Now there should not be the problem of dismissing the keyboard if these few steps are followed.</p>]]></content:encoded></rss:item><rss:item rdf:about="http://www.agilitesoftware.com/blog/2009/9/28/iphone-tableview-swiping-a-cell-to-delete.html"><rss:title>iPhone TableView: Swiping a cell to delete</rss:title><rss:link>http://www.agilitesoftware.com/blog/2009/9/28/iphone-tableview-swiping-a-cell-to-delete.html</rss:link><dc:creator>Niels Hansen</dc:creator><dc:date>2009-09-28T20:25:28Z</dc:date><dc:subject>Development Development SDK iPhone iPhone xCode</dc:subject><content:encoded><![CDATA[<p>One of the elegant features added to the iPhone mail app was the ability to swipe your finger from left to right on a tableView cell and have the delete button appear (like the right image below) to delete an item from the tableView. <span class="full-image-float-left ssNonEditable">
<p><span><a href="http://www.thoughtblog.com/wp-content/uploads/2009/07/tableview.png"><img src="http://http://svn.agilitesoftware.com/imgs/2/tableview-150x150.png?__SQUARESPACE_CACHEVERSION=1254169083552" alt="" /></a></span></p>
<p><span>&nbsp;</span></p>
</span>Many people have asked me if this is possible to do for their own iPhone app.<span class="full-image-float-right ssNonEditable"><span><img class="alignright size-thumbnail wp-image-318" title="tableviewdelete" src="http://svn.agilitesoftware.com/imgs/2/tableviewdelete-150x150.png" alt="tableviewdelete" width="150" height="150" /></span></span>&nbsp;</p>
<p>The short answer is Yes but you have to use a couple of <em>undocumented API</em> calls. It's actually quiet easy. Set the cell's <strong>editingStyle</strong> to <strong>UITableViewCellEditingStyleDelete. </strong>This is an undocumented feature. Currently the documentation will show that it's a read only property. However there is nothing stopping one from setting the set property. A compiler warning like below will appear when implementing the set property.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a href="http://svn.agilitesoftware.com/imgs/2/editingstylewarning.png"><img class="size-full wp-image-311 " title="editingstylewarning" src="http://svn.agilitesoftware.com/imgs/2/editingstylewarning.png" alt="Editing Style Warning for setting the style" width="718" height="88" /></a></p>
<p>To set the style, do it either in the <em>cellForRowAtIndexPath</em> method or implement a <em>TableViewCell</em> object. I'm not going to get into details of how to create a cell, I assume you already know how to do that.</p>
<div class="csharpcode">
<pre class="alt">- (UITableViewCell *)tableView:(<span class="kwrd">UITableView*</span>)tableView cellForRowAtIndexPath:(<span class="kwrd">NSIndexPath*</span>)indexPath</pre>
<pre>{</pre>
<pre class="alt">   <span class="rem">// Add your code here to create the cell</span></pre>
<pre class="alt">   <span class="rem"> .....</span></pre>
<pre>    [cell <span class="kwrd">setEditingStyle</span>:<span class="kwrd">UITableViewCellEditingStyleDelete</span>];</pre>
<pre>}</pre>
</div>
<p>The final set step is to actually do something when the user swipes the cell and clicks the Delete button. This is handled by adding the <strong>commitEditingStyle</strong> message to the view.</p>
<div class="csharpcode">
<pre class="alt">- (<span class="kwrd">void</span>)tableView:(<span class="kwrd">UITableView*</span>)aTableView commitEditingStyle:(<span class="kwrd">UITableViewCellEditingStyle</span>)editingStyle forRowAtIndexPath:(<span class="kwrd">NSIndexPath*</span>)</pre>
<pre>{</pre>
<pre class="alt">    <span class="kwrd">if</span> (editingStyle == <span class="kwrd">UITableViewCellEditingStyleDelete</span>)    {</pre>
<pre>       <span class="rem"> //Add Code to delete from the Data Source</span></pre>
<pre>    }</pre>
<pre class="alt">}</pre>
</div>
<p>That's all to it. A very simple implementation for an elegant solution. I'm still miffed why this is undocumented, so be warned, you could have Apple decline your app because of the usage of an undocumented feature. <strong>UPDATE: iPhone 3.0 SDK you no longer have to set the EditingStyle of the Cell.</strong></p>]]></content:encoded></rss:item><rss:item rdf:about="http://www.agilitesoftware.com/blog/2009/9/28/xcode-tip-column-mode-text-selecting.html"><rss:title>Xcode Tip: Column mode text Selecting</rss:title><rss:link>http://www.agilitesoftware.com/blog/2009/9/28/xcode-tip-column-mode-text-selecting.html</rss:link><dc:creator>Niels Hansen</dc:creator><dc:date>2009-09-28T20:22:59Z</dc:date><dc:subject>Development Development xCode</dc:subject><content:encoded><![CDATA[There are times when you need to select text in column mode instead of the tradtional row selection. Think of it like selecting a range of columns in a spreadsheet like Excel or Numbers.

For example, lets say there is 4 members that you want to make into properties.

<a href="http://svn.agilitesoftware.com/imgs/2/Picture-4.png"><img class="aligncenter size-full wp-image-326" title="Text to Highlight" src="http://svn.agilitesoftware.com/imgs/2/Picture-4.png" alt="Text to Highlight" width="393" height="144" /></a>
<p style="text-align: auto;">Move the cursor to the beginning column you want to start highlighting from. Hold down the <span style="font-weight: bold;">ALT/Otption key</span> and then press and hold down the <span style="font-weight: bold;">left mouse button</span>. Next, highlight the code with the mouse or arrow keys. After the code is highlighted, simply copy  it to the clipboard. (command + C Key)</p>
<p align="left"><a href="http://svn.agilitesoftware.com/imgs/2/Highlighted.png"><img class="aligncenter size-full wp-image-327" title="Highlighted Text" src="http://svn.agilitesoftware.com/imgs/2/Highlighted.png" alt="Highlighted Text" width="341" height="287" /></a></p>
<p align="left">Notice in the image above, I previously pasted the @property four (4) times so that I could then insert the selected code once.  To do this, move the cursor to the position of the first @property and paste. (Command + V).</p>

<p align="left"><a href="http://svn.agilitesoftware.com/imgs/2/Text-Pasted.png"><img class="aligncenter size-full wp-image-328" title="Text Pasted" src="http://svn.agilitesoftware.com/imgs/2/Text-Pasted.png" alt="Text Pasted" width="398" height="102" /></a>
There you go!  The columns of code that were highlighted and saved to the clipboard are now pasted all at once.  No need to have to paste each variable one at a time!
<p align="left"><span style="font-weight: bold;">ALT</span> + <span style="font-weight: bold;">Left Mouse button</span> = Column Mode Text Selection</p>]]></content:encoded></rss:item><rss:item rdf:about="http://www.agilitesoftware.com/blog/2009/9/28/developing-under-osx-106-and-xcode-32.html"><rss:title>Developing under OSX 10.6 and Xcode 3.2</rss:title><rss:link>http://www.agilitesoftware.com/blog/2009/9/28/developing-under-osx-106-and-xcode-32.html</rss:link><dc:creator>Niels Hansen</dc:creator><dc:date>2009-09-28T20:08:28Z</dc:date><dc:subject>Development Development OSX Snow Leopard iPhone iPhone xCode</dc:subject><content:encoded><![CDATA[The upgrade to Snow Leopard is worth it alone for xCode 3.2]]></content:encoded></rss:item></rdf:RDF>
