On 31/01/2011, at 16:30, Ben Golding wrote:

> I have an app with a NSTableView where the data is presented to the user.  
> When the user hits "Find", I'd like to be able to scroll the table view to 
> the visible cell (easy enough) and then select the range that matched within 
> that field (not so easy).
> 
> At present, my code looks like:
> 
> NSCell *cell = [csvTableView preparedCellAtColumn:col row:row];
> NSText *textEditor = [csvWindow fieldEditor:YES forObject:cell];
> 
> NSLog(@"Match: row %@, field %@, range(%d, %d)", [match row], [match field], 
> [match range].location, [match range].length);
> [csvTableView scrollRowToVisible:row];
> [csvTableView scrollColumnToVisible:col];
> [textEditor setSelectedRange:[match range]];
> 
> I feel like I need to between getting the textEditor for the window and 
> calling -setSelectedRange:, I just don't know what.

I got a really great answer from Corbin Dunn who explained that what I was 
doing was not giving me what I wanted: asking for a field editor for the cell 
wasn't sensible; what I really wanted was the field editor for the control, ie 
the tableView.

In essence he suggested I should change my code to:

    NSText *textEditor;
    
    [csvTableView editColumn:col row:row withEvent:nil select:NO];
    textEditor = [csvWindow fieldEditor:YES forObject:csvTableView];
    [textEditor setSelectedRange:[match range]];

which is not just shorter, it works!

        Ben.

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________

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

Reply via email to