views:

91

answers:

1

Hi,

I am developing a special type of view controller for an iPhone component library.

I have got the who view controller working well, but I need to change it so that it works in one of two ways:

Either it is an abstract class which you must subclass and provider the implementation for a specific method which the controller will call whenever it needs its data.

Or it needs to be a useable class which has a property which is a selector... when you set the selector it specifies the method which should be called to collect the data.

I would like to know how I can implement either of these and which you would recommend

A: 

The standard way of doing this in Objective-C and the iPhone is through delegation.

Normally you provide a property in your view controller called delegate that is typed for a particular protocol you create. Then who ever is using your view controller will set the delegate property with their delegate for your view controller. You can then call the methods in your protocol on their delegate.

See the answer at this SO question for a full example.

Also read the Cocoa Fundamentals Guide for information on what delegates are and why they are used in Cocoa. There is also an example there of how to create delegates for your own custom classes.

Brandon Bodnár