arrays - Swift - Cascading Pickers -


assuming have 3 pickers following content:

 restaurant{    [menu]     name  }   menu{   [ingredients]   time  }   ingredients{   ...  } 

how can implement picker updates automatically if objects changes? (e.g. when restaurant picked, menu , ingredients changes, when menu picked ingredients changes)

you can this:

class viewcontroller: uiviewcontroller, uipickerviewdatasource, uipickerviewdelegate {     @iboutlet weak var restaurantspicker: uipickerview!     @iboutlet weak var menupicker: uipickerview!     @iboutlet weak var ingredientspicker: uipickerview!      var restaurants = ["r1", "r2", "r3"]      var menus = ["r1": ["m1", "m2"],                 "r2": ["m2"],                 "r3": ["m1", "m3"]]      var ingredients = ["m1":["i1", "i2", "i3"],                        "m2":["i1", "i3"],                        "m3":["i2", "i3"]]       func numberofcomponents(in pickerview: uipickerview) -> int     {         return 1     }      func pickerview(_ pickerview: uipickerview, numberofrowsincomponent component: int) -> int     {         if pickerview === restaurantspicker         {             return restaurants.count         }         else if pickerview === menupicker         {             let restaurant = restaurants[restaurantspicker.selectedrow(incomponent: 0)]             return menus[restaurant]!.count         }         else         {             let restaurant = restaurants[restaurantspicker.selectedrow(incomponent: 0)]             let menu = menus[restaurant]![menupicker.selectedrow(incomponent: 0)]             return ingredients[menu]!.count         }     }      func pickerview(_ pickerview: uipickerview, titleforrow row: int, forcomponent component: int) -> string?     {         if pickerview === restaurantspicker         {             return restaurants[row]         }         else if pickerview === menupicker         {             let restaurant = restaurants[restaurantspicker.selectedrow(incomponent: 0)]             return menus[restaurant]?[row]         }         else         {             let restaurant = restaurants[restaurantspicker.selectedrow(incomponent: 0)]             let menu = menus[restaurant]![menupicker.selectedrow(incomponent: 0)]             return ingredients[menu]?[row]         }     }      func pickerview(_ pickerview: uipickerview, didselectrow row: int, incomponent component: int)     {         if pickerview === restaurantspicker         {             menupicker.reloadcomponent(0)             ingredientspicker.reloadcomponent(0)         }         else if pickerview === menupicker         {             ingredientspicker.reloadcomponent(0)         }     } } 

screenshot:

enter image description here


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -