Non riesco a connettere l'origine dati e delegare i punti vendita della visualizzazione tabella all'interno dello storyboard alla mia classe personalizzata delegata. Vorrei delegare quelle funzioni di tabella a un'altra classe. C'è qualcosa che ho fondamentalmente frainteso riguardo alla delega, ai punti vendita e al cablaggio di tutto in uno storyboard.UITableView origine dati e delega non si connettono a una classe personalizzata
Sfondo
Ho un UIViewController
che ha una vista contenente un UIPickerView
e tra le altre cose, un UITableView
.
Ho raggiunto il punto in cui il mio UIViewController
è troppo grande e vorrei spostare le funzioni relative alla tabella in un'altra classe.
Ho creato la seguente classe per contenere quei metodi di tabella come numberOfSectionsInTableView:
.
@interface ExerciseTableDelegate : NSObject <UITableViewDelegate, UITableViewDataSource>
@property (strong, nonatomic) ExerciseDataController *dataController;
@end
ho pensato di mettere un riferimento alla classe di cui sopra nel mio UIViewController
@interface ExerciseViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate>
{
UIPickerView *exercisePicker;
}
@property (strong, nonatomic) IBOutlet ExerciseTableDelegate *tableDelegate;
@end
Speravo che all'interno della storyboard, quando mi trascina una delle origine dati o delegare le prese di mia tavola vista sullo UITableViewController
mi darebbe la possibilità di connettermi alla mia classe delegata. Non è stato così.
Ho quindi provato a creare un oggetto all'interno dello storyboard, assegnandogli la classe ExerciseTableDelegate
. Potrei quindi trascinare il delegato della vista tabella sull'oggetto, ma questo non è lo stesso oggetto che ho impostato all'interno del mio AppDelegate
.
mia app delegato
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
ExerciseViewController *rootViewController = (ExerciseViewController *)[[navigationController viewControllers] objectAtIndex:0];
ExerciseTableDelegate *tableDelegate = [[ExerciseTableDelegate alloc]init];
ExerciseDataController *dataController = [[ExerciseDataController alloc] init];
tableDelegate.dataController = dataController;
rootViewController.tableDelegate = tableDelegate;
// Override point for customization after application launch.
return YES;
}
- Devo fare il mio oggetto un singoletto ed ancora inizializzare in il delegato?
- Devo eseguire questa configurazione nel codice piuttosto che nello storyboard ?
- La creazione di un oggetto nello storyboard è un'idea sbagliata?
Mi sento vicino ma penso di fare troppo.
Thankyou @jrturton. Questo ha fatto il trucco. In aggiunta a ciò, avevo bisogno di fare la cosa standard per creare un IBOutlet per la tabella ExerciseViewControllers e necessario per collegarlo nello storyboard. – AllTheThingsICanDo