Ok - I think this is the final question. I've created a layout that is essentially a bunch of ragged bottom columns - like a Trello or Kanban board. The items in the collection view are "stories" with size around 100x100. To begin with, I prepopulate the underlying datastore and things are great, I've got 2, 3 or 4 stories in each column. Dragging around works just as expected.
In my case, a column is a SECTION. A 4 column board then has 4 sections. Problem: if I move ALL the items out of a column (a column is a SECTION) ... I can't move anything back INTO the column (section). I don't think the SECTION has any HEIGHT if it has no items ... and consequently, dragging a "story" item over the area that represents a column does nothing because the CollectionView doesn't actually create anything there if I have at 0 item layoutAttributes for that section. Is there a specific way to do this? I still have a supplementary view as the column header and it always appears ... and in a UITableView, I think, if I have a empty section but have a section header, the built in move functionality will allow me to drag an item over the section header and allow me to drop into the section (but I can't remember if this is true) --- but dragging an "story" item over the supplementary view does nothing. In the worst case, do I need to keep some sort of hidden item as the first element? I take all "stories" out of a column (section), should I put at least one, invisible item in the column (section) to keep it available as a drag target? Hope that makes sense - I tend to be wordy. Thanks, -Luther On Tue, Mar 8, 2016 at 12:05 AM, Luther Baker <lutherba...@gmail.com> wrote: > Now we're cooking with GAS!!!!!!! > > override func applyLayoutAttributes(layoutAttributes: > UICollectionViewLayoutAttributes) { > print("apply layout attributes!: \(titleLabel.text)") > } > > Thanks Man! > -Luther > > > > On Mon, Mar 7, 2016 at 11:54 PM, Luke Hiesterman <luket...@apple.com> > wrote: > >> By teaching a cell to respond to an attribute I merely meant that it >> should override setLayoutAttributes: and do something in there with the >> relevant property. Hope that helps. >> >> Luke >> >> On Mar 7, 2016, at 9:39 PM, Luther Baker <lutherba...@gmail.com> wrote: >> >> > teach your cell classes to respond to that property >> >> Want to think about this out loud. Wondering what would 'trigger' a >> lookup on the layout's layoutAttributesForItemAtIndexPath ... and where >> would I store the indexPath I am dragging around. >> >> If I were to be more literal - in my view controller, I handle the >> UIGestureRecognizerState.Began event. At this point, I can get the >> indexPath of the element I am about to move and if I change something on >> that cell at that time, it sticks for the life of the drag without >> reference to layoutAttributes. I also handle the >> UIGestureRecognizerState.Changed event and again, if I retrieve the cell at >> the gesture's locationInView and change things in it ... those changes >> stick until I let go of the drag. >> >> Stepping into the custom layout for a minute ... as you suggested, I am >> now implementing layoutAttributesForInteractivelyMovingItemAtIndexPath ... >> and that is getting invoked in response to the >> updateInteractiveMovementTargetPosition call I am making as the gesture >> location changes. Now, I know the collection view's methods are triggering >> the layout's callbacks - but I'm not sure what would trigger me to fetch >> the custom attributes you are suggesting. At a minimum, to ask the layout >> for the attributes at that indexPath, I'd have to actually be tracking the >> 'selectedIndexPath' in which case, I could just get the cell and modify it >> directly. >> >> I guess I'm wondering how to "teach my cells classes to respond to that >> property" ... Cells are reused so I'm not even sure how I'd go about >> setting up and tearing down a KVO type relationship for the specific cell I >> am dragging around. Maybe there is a WWDC video that digs into this? or >> it's an easy explain? >> >> Sorry for being so long-winded. I'm not sure I'm communicating my >> question well. Hope you can understand my underlying question and nudge me >> the right way but at any rate, thanks for your help so far. I'd love to use >> an elegant, "made for CollectionView" solution ... but I don't think I'm >> looking at it correctly yet. Just in general I guess, how can a change to >> the layoutAttributes cause my CollectionViewDelegate and DataSources to >> fetch the cell I'm dragging around and change it (or does it not require >> the delegates or datasources ... ?) >> >> Thanks, >> -Luther >> >> >> >> On Mon, Mar 7, 2016 at 2:45 PM, Luke Hiesterman <luket...@apple.com> >> wrote: >> >>> You can create your own subclass of UICollectionViewLayoutAttributes and >>> add something like an “isMoving” property to that. Then teach your cell >>> classes to respond to that property by changing the background color. >>> >>> Luke >>> >>> On Mar 7, 2016, at 11:44 AM, Luther Baker <lutherba...@gmail.com> wrote: >>> >>> Thanks Luke! That was it - I can drag and drop successfully now. >>> >>> One more question, how do I modify a property of the item I'm dragging >>> around if the property is NOT currently in UICollectionViewLayoutAttributes >>> ... I don't see a call to the datasource or delegate when I select the cell >>> for moving ... so I'm not sure how to change the background color to "red" >>> for instance. >>> >>> Would I have to add my own view to the superview and manually move it >>> around in the dragging callbacks? >>> >>> Thanks! >>> -Luther >>> >>> >>> On Mon, Mar 7, 2016 at 11:59 AM, Luke Hiesterman <luket...@apple.com> >>> wrote: >>> >>>> I’d check your return value for this method in your layout: >>>> >>>> - (UICollectionViewLayoutAttributes >>>> *)layoutAttributesForInteractivelyMovingItemAtIndexPath:(NSIndexPath >>>> *)indexPath withTargetPosition:(CGPoint)position NS_AVAILABLE_IOS(9_0); >>>> >>>> Luke >>>> >>>> On Mar 7, 2016, at 9:55 AM, Luther Baker <lutherba...@gmail.com> wrote: >>>> >>>> I followed the directions here, >>>> >>>> http://nshint.io/blog/2015/07/16/uicollectionviews-now-have-easy-reordering/ >>>> - to add iOS9 style dragging to my UICollectionView - and it sort of >>>> works. >>>> >>>> As described in the article, I added a long press gesture recognizer and >>>> wired it in to make calls on the collection view -- but now, if I long >>>> press, the element under my finger disappears. As I drag the transparent >>>> image around, the other elements shift - but I can never see the >>>> element I >>>> am dragging around. When I let go, there is simply a hole left where I >>>> "dropped" the element. >>>> >>>> I do, very much, have a custom layout and I'm not sure that if, for >>>> drag, I >>>> need to do anything special. Do I need to calculate the frame of the >>>> item I >>>> am dragging around? I'm not sure what to try next except to roll my own >>>> dragging. Any thoughts or things to try? >>>> >>>> Thanks in advance. >>>> _______________________________________________ >>>> >>>> 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: >>>> https://lists.apple.com/mailman/options/cocoa-dev/luketheh%40apple.com >>>> >>>> This email sent to luket...@apple.com >>>> >>>> >>>> >>> >>> >> > _______________________________________________ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com