Saturday, August 30, 2014

Core Data Custom Migration, Part 1: Versioning & Setting Migration Policy

The current app I'm working on as a side project is an expense tracking and budgeting app. For this app I am, of course, using Core Data to save all the tracked expenses that a user enters. Since I was modeling expense data, I gave it no additional thought to use a double-precision floating point as the type for the expense amount. It turns out, this isn't exactly such a hot idea

Wednesday, March 26, 2014

Listening To Keyboard Events

When dismissing the keyboard is part of an animated transition in an iOS application, the keyboard dismisses itself at its own pace while the other animations take effect at the same time. Sometimes this effect isn't too bad.

But sometimes we can make it better.

Tuesday, February 11, 2014

Laying Out Subviews In A Reused UITableViewCell

Last night I ran into a frustrating issue where it appeared that reused UITableViewCell objects were coming into view with highlighting set. I tried every type of interaction-related API I could for the cell and for the table view with no effect. I went to bed bleary-eyed from reading countless Stack Overflow posts and immensely frustrated. 

Sunday, February 9, 2014

UITableViewCell Frame Property

As I'm playing around with two different ways to customize a UITableViewCell for one of my table views, I noticed a very peculiar thing that happened with the UITableViewCell's frame property depending on which method I used.

Friday, February 7, 2014

Customizing UINavigationItem

When an app you are writing is intended to have a highly customized look one of the things that may get special treatment is the UINavigationItem for view controllers that are managed by a UINavigationBar object.

Each UIViewController has its own UINavigationItem property that is pushed or popped by a UINavigationBar object that lays out navigation bar at the top of the view. 

I had two goals. 1) Drop custom left and right bar button items and custom text on the navigation bar and 2) Customize the animations between the navigation items in the navigation bar. So I needed to sub-class UINavigationBar for 2). And I needed to create a custom UINavigationItem that I could reuse everywhere and give the app a consistent look and feel. This would satisfy 1).

Sunday, January 19, 2014

Finally, A Sprint-Sprint!

I imagine SCRUM uses the term "sprint" for development iterations to emphasize the quickness of the cycles to deliver shippable functionality. As I've written about before, I'm implementing a one-man SCRUM development team. This last sprint began seven days ago and was complete last night.

That was, by far, my fastest development sprint since starting the project. I believe there were two main reasons why I was able to accelerate my development this time. 

Wednesday, January 15, 2014

UIViewControllerTransitioningDelegate vs. UINavigationControllerDelegate

In my previous post I wrote about using iOS 7's new customization animations for transitioning between UIViewControllers. What I didn't realize is that the mechanism by which a UINavigationController customizes its transitions is different from the way other UIViewController subclasses do.

I had declared that my custom UINavigationController conformed to the UIViewControllerTransitioningDelegate protocol and had coded up the required protocol methods and the different animation controllers (UIViewControllerAnimatedTransitioning) and then was deflated when nothing was calling my UIViewControllerTransitioningDelegate methods.

Upon further research I found that my navigation controller actually needed its 'delegate' property set to an object conforming to the UINavigationControllerDelegate protocol and this object would serve up the appropriate animation controllers for the push and pop operations.

It was a slightly difficult distinction to find, but once I implemented the methods I found that (half) my animations (nearly) worked.