ios - How to push a new controller from UITableViewCell -


i've got 2 classes. 1 itemcontroller (extends uitableviewcontroller) , itemcell (extends 'uitableviewcell').

when each cell clicked push new controller within itemcontroller's didselectrowatindexpath.

additionally, in itemcell, i've got couple of small buttons different tag each cell. when of these buttons clicked want push new controller. how can this?

self.navigationcontroller.pushviewcontroller itemcell doesn't work since doesn't have navigationcontroller

i prefer see solution in rubymotion if not, thats fine :)

edit

i've read delegate can solution i'm not sure how implement it. i've done

itemcontroller:

  def tableview(table_view, cellforrowatindexpath: index_path)     data_row = self.data[index_path.row]     cell = table_view.dequeuereusablecellwithidentifier(category_cell_id) || begin       rmq.create(itemcell.initwithsomething(self), :category_cell, reuse_identifier: category_cell_id).get     end     cell.update(data_row)     cell   end 

itemcell:

class itemcell < uitableviewcell    attr_accessor :delegate   def initwithsomething(delegate)     @delegate = delegate   end    ...use @delegate push new controller end 

but error

item_controller.rb:114:in tableview:cellforrowatindexpath:': undefined methodinitwithsomething' itemcell:class (nomethoderror)

the general idea cell should tell view controller happened , view controller decided push other view controller.

you can delegate design pattern:

itemcell has delegate property conform protocol. example

@class itemcell @protocol itemcelldelegate - (void)itemcelldidclicksubmitbutton:(itemcell *)cell; @end  @interface itemcell @property (nonatomic, weak) id<itemcelldelegate> delegate ... @end 

in tableview:cellforrowatindexpath: set controller cell delegate (obviously view controller should conform itemcelldelegate):

cell.delegate = self 

the button on cell trigger ibaction on cell in turn call delegate method

- (ibaction)submitbuttontapped:(id)sender {     id <itemcelldelegate> delegate = self.delegate;     if ([delegate respondtoselector:@selector(itemcelldidclicksubmitbutton:)]) {         [delegate itemcelldidclicksubmitbutton:self];     }  } 

and in view controller should like:

#pragma mark - itemcelldelegate  - (void)itemcelldidclicksubmitbutton:(itemcell)cell {     uiviewcontroller *controller = // create view controller push     [self.navigationcontroller pushviewcontroller:controller]; } 

Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -