Home > Blockchain >  Convert the original tableview to collectionview data cannot be passed
Convert the original tableview to collectionview data cannot be passed

Time:01-14

I want to replace the original tableview with collectionview, the code of the original tableview:

 let selectedRow = MarketView.indexPathForSelectedRow!.row

I'm learning online to change to this code and I get an error:

let selectedRow = MarketView.indexPathsForSelectedItems!.first

The error shows: Cannot convert value of type 'IndexPath?' to expected argument type 'Int' This is the complete code as shown in the figureenter image description here

I just learned to use collectionview, how should I modify it, thank you for your help

CodePudding user response:

Unlike indexPathForSelectedRow which returns a single index path indexPathsForSelectedItems returns an array of index paths

And row is not first, the collection view equivalent of row – as the name of the API implies – is item, you have to write indexPathsForSelectedItems!.first!.item.

But it's not recommended to force unwrap the objects. A safer way is

guard let selectedRow = MarketView.indexPathsForSelectedItems?.first?.item else { return }
  •  Tags:  
  • ios
  • Related