Hi Everyone,
I am comming back to cocoa programming and to this list after a few
years without programming anything, so please forgive me in advance
for any stupid questions. I've read the docs, studied Hillegass's book
again and searched the archives, but still couldn't find a definitive
answer to my questions.
My app is document-based, started from the XCode template. I have two
custom views which are outlets of MyDocument and some extra buttons
and text fields on the document's NIB file. Drawing, actions and
events work fine for the most part. but in order to do the fun stuff
with the app, I need to acess methods in the document as a result of
mouse events in the custom views, like updating the values in the text
fields and making modifications to my data model classes (the data
engine is a collection of crossplatform C++ classes). I came across a
few suggestions in cocoa-dev's archives from a few years ago, but they
didn't seem quite it.
1. Create outlets in the view's subclasses and point them to
MyDocument using IB;
2. Create outlets as in 1., but adding acessor methods to initialize
them;
3. accessing MyDocument with messages to the class hierarchy , as in
[[[self window] windowController] document];
I tried to use a mix of these approaches, or in other words: query the
window controller for the document and then store its reference inside
the views forq quicker access. Here's where I get stuck:
In order to use 1. or 2., I need to declare an instance of MyDocument
inside my view's classes. The compiler won't let me do this unless I
import MyDocument to the class definitions. The problem is that the
classes are already included in MyDocument and the "chicken/egg" thing
makes XCode spit a zillion compile errors (naturally). I tried
declaring the variables inside the custom views as type 'id' and
tested the approach calling a MyDocument method which shows some data
in various textfields. The code compiled and ran, but MyDocument never
got the messages.
// inside custom view's class definition
id document;
// inside awakeFromNib
document = [ [ [ self window ] windowController ] document ];
// inside mouseUp
[document refreshParameters];
If I just query the window controler for the document on demand like
this:
[ [ [ [ self window ] windowController ] document refreshParameters ];
the code works, but I still can't get rid of those "message-not-found"
warnings:
"warning: no '-refreshParamters' method found
(Messages without a matching method signature will be assumed to
return 'id' and accept '...' as arguments.)"
So my questions are:
1) Is there a better way to approach this?
2) Is it OK to just call the document like this and ignore the
compiler warning?
I'd really appreciate if someone could comment on this - i'd hate to
find out later that i'd been building on a bad design...
Thanks already for a y help.
Carlos.
_______________________________________________
Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com
This email sent to arch...@mail-archive.com