Binding to NSMatrix for BOOL attributes - objective-c

I have a simple core-data entity that has a Boolean attribute called subscribedToNewsletter. I have designed my UI to represent this field as a radio button group with Yes/No as the text values (and obviously YES/NO as the backing BOOL values).
I have always considered myself to have excellent google-fu, but for the life of me, I am unable to find any clear documentation on:
how to bind the selected value of the NSMatrix (or is it the cell?) back to a YES/NO value
how to bind the textual values (if indeed I do need to; I know there are only ever going to be two values - surely they can be hard-coded in Interface Builder, or not?)
Next up will be how to bind a radio group (with Male/Female text) to a String field called gender that has M and F as possible values - but I digress.
Any pointers would be very much appreciated. Thanks a lot.

Not sure if I got no answers because a) it is such a stupid question, or b) no-one in the world knows how. The latter doesn't strike me as likely, so I can only presume the first :)
Anyway just in case there others as stupid as me, I thought I'd give some feedback on how I managed to achieve it.
In Interface Builder, I created a NSMatrix with two radio button cells with "Yes" and "No" as the text for each respectively. In the Attributes Inspector (command-1), make sure the Tag field is set to 1 for the "Yes" button cell, and set to 0 for the "No" button cell. Then, in the Bindings Inspector (command-4) bind the SelectedTag field for the matrix to the Boolean property on your entity. Easy as pie.
I make no claims that this is the best way... just that it is effective.

I have found one solution for this part-
how to bind the selected value of the
NSMatrix (or is it the cell?) back to
a YES/NO value
Here is the link to the problem which I faced and its solution- NSMatrix simple binding question
Hope this helps !

Related

How to lock combobox so that the text and items cannot be modified/delete/erased?

Is it possible lock the combobox so that the text can not be deleted/erased or modified. And make only choose the items? Thank you in advance. Hope is it possible.
Set the "DropDownStyle" property of the combobox to DropDownList.
This will allow only items in the list to be selected and will not allow any user input:
Option 1
Simply set the ComboBox.Enabled to False - that way they can't change the values!
Option 2
Otherwise, use the dropDownStyle:
make DropDownStyle property to DropDownList instead of DropDown
For more information
Read this article (yes, it's written in c#, but the properties are the same!)
the above image displays this quite well.
EDIT
There is also a question previously asked here that asked a similar question.
You can set ComboBox.DropDownStyle to ComboBoxStyle.DropDownList.

Where can I bind column cell view controls?

I've been Googling for 3 hours, I can't find where to bind these things for Core Data in this textbook I'm reading. I just want to know where to find out where to bind it. I assume it's in the binding inspector after you highlight a column but under value it doesn't show anything like "Col 0 Image View" and for the first column I can't see a section that includes two places to set a binding which needs for an Image View and a Text Field. Below is an excerpt (as well as I can copy it) from the textbook Cocoa Programming for Mac OS X 4th Edition chapter 11, page 185.
"Now bind the value of each column's cell view control(s), as shown in the following table."
One of the entries in the table is:
Binding valueof Col 0 Image View
Bind to Table Cell View
Controller Key Empty
Key Path objectValue.photo
So after a day's work of searching and random clicking I found this rather elusive, yet out-in-the open binding. I hope this helps anyone else who might be frustrated.
This is where to find it, you want to click the one that shows what I have circled. Open the bindings inspector and then it'll pop up with objectValue already populated in your key path.
The first column has two since it has an image view and text view. Make sure to select the appropriate one for whichever one you want bound.

data from Gridview to textbox

i have a form with datagridview in vb.net that show my data in columns. what i'm trying to accomplish is that after choosing a row and pressing Edit button a new form will open and split the row for the right text boxes to update the data. the datagridview row shows different types of data: name,email,date,etc... any idea? Thanks in advance!
In the EditButton click-handler, you may access the selected row in your datagridview with the MyDataGridView.CurrentRow property.
This object - a DataGridViewRow - has Cells, which you can access individually by index and then get to their values:
...CurrentRow.Cells(n).Value
This then, in turn, you may use to fill the items in your edit form.
After completing your edit form, retrieve the (updated) values and put them back into the CurrentRow.Cells(n).Value
If your datagridview is databound, then you can also work directly with the datastore, through
...CurrentRow.DataBoundItem
The type of this object depends of course on your configuration; it may, for instance, be a DataRow.
This should be enough to get you going.
Final note on your added remark "thanks ...": you're apparently new at this site. I'm not sure why you got "downvotes". It may be because your question is rather elementary ("homework"), or people found your problem description not clear/detailed enough. Please, understand that answers (if any) are provided "unpaid for", and require "voluntary" effort from the contributors. Understandably they prefer that YOU do most of the work/study/trying, before asking someone else "to do your work for you". No offense intended.

How to show button cell (check box) title in table view, using bindings

I am trying a simple application where I have a mutable array of mutable dictionaries, such as -
NSMutableDictionary *sample6 = [[NSMutableDictionary alloc] initWithObjectsAndKeys:#"title6",#"title",[NSNumber numberWithBool:NO],#"state", nil];
In IB I created a table view with NSButtonCell (check box).
I was able to show checkboxes state (checked or unchecked), using following table column bindings:
Value - ArrayController.arrangedObjects.state
In this case it shows an array of checkboxes with title - "Check" as shown in below screen-shot:
Now my aim is to show checkboxes title using bindings, such that it
gets value from same mutable dictionary from which it is getting its
state.
I tried following binding for button cell but it did not work:
title -> ArrayController.selection.title
I also tried this binding for button cell :
title -> ArrayController.arrangedObjects.title
but it didn't work, it appeared like this after using above binding:
Can any one suggest me which controller key to use and if this is not the correct way to show titles then what is the correct way to do so?
Unfortunately you'll need to write a little code if you want to do it this way. When binding table column values to an array, the table column is handling taking the prototype data cell, setting its values, and "stamping" it in place for each row. The button cell's bindings aren't exposed "through" the table column, so a simple binding won't do it for you.
To Answer Your Question
So. Since only the value binding is exposed, the title must be set manually if you really want the checkbox's title to reflect the value (ie, you really want the checkbox to handle both the check state and displaying the title). To do this, you have to mix bindings with < NSTableDelegateProtocol > . Use the -tableView:willDisplayCell:forTableColumn:row: method to set the cell's -title property to that of the proper object in your array controller's -arrangedObjects array each time you're asked. Mixing bindings and data source / delegate methods is actually quite common for more than the most basic applications, so don't worry that you're doing something dirty. Note: you won't be able to support editing the title by doing this since it's a checkbox.
An Alternative Design
Personally, I'd avoid all that and just add a separate table column for the title. Bind the new column's value to the array controller's arrangedObjects.title and turn off the checkbox button cell's title so only the checkbox itself is displayed. That simplifies the whole thing greatly and allows editing the title.

How would you make the text in a checkbox cell be able to be edited?

How would you make the text in a check box cell able to be edited like in a text cell instead of it just checking the Checkbox? The thing is that the Checkbox is Boolean in the Core Data Model and the Text is a String, so I don't know how I would make this work.
Have two columns: One with a checkbox cell and the other with a text cell, each bound to the appropriate property of your model objects.
Why use checkbox? The checkbox is designed to have two values only as you say. Therefore, you can try other controls, such as input area and so on. What I mean is that you can't make the rectangle to roll because it can't roll at all, right?