Vai al contenuto

TableView in UIViewController


mapa3n

Messaggi raccomandati

"Method 'tableView:numberOfRowsInSection:' in protocol 'UITableViewDataSource' not implemented". La scritta mi sembra chiara ma il problema è che io ho implementato il metodo tableView:numberOfRowsInSection: (seppur scrivendolo tutto a mano, visto che il completamento automatico non me lo suggeriva!). Aprendo la "freccia triangolare" in "Show the issue navigator" trovo scritto: Method 'tableView:numberOfRowsInSection:' declared here

 

Ps UITableViewDataSource è stato aggiunto come delegato (<>) nel header (.h)...

Link al commento
Condividi su altri siti

Prova a postare l'intero codice, così riusciamo ad aiutarti meglio.

eccolo: 

.h file

@interface AccessGarantedViewController : UIViewController <UIAlertViewDelegate, UITableViewDataSource, UITableViewDelegate>
{
	IBOutlet UITableView *tableView;
}

@property (weak, nonatomic) NSMutableArray *myREC;

- (IBAction)logOut:(id)sender;

@end 

.m file

#import "AccessGarantedViewController.h"

@interface AccessGarantedViewController ()

@end

@implementation AccessGarantedViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

- (IBAction)logOut:(id)sender {
	UIAlertView *alertViewLogOut = [[UIAlertView alloc]initWithTitle:@"Sei sicuro di voler uscire?" message:nil delegate:self cancelButtonTitle:@"Annulla" otherButtonTitles:@"Esci", nil];
	[alertViewLogOut show];
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
	if (buttonIndex == 1) {
		[self performSegueWithIdentifier:@"logOut" sender:nil];
	}
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
	return 1;
}

- (NSInteger)numberOfRowsInSection:(UITableView *)tableView { //inserito manualmente, il completamento automatico non lo suggerisce
	return [self.myREC count];
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
	// The header for the section is the region name -- get this from the region at the section index.
	return @"News";
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
	UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"myREC" forIndexPath:indexPath];
	if (cell == nil) {
		cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"myREC"];
	}
	cell.textLabel.text = [self.myREC objectAtIndex:indexPath.row];
	return cell;
}

@end

Ps Nello storyboard ho collegato dal ViewController la TableView come delegato, il DataSource e il Delegate della TableView sono collegati entrambi al ViewController...

 

PS Ho provato, con lo stesso procedimento, a creare un nuovo progetto e in quest ultimo non c'è alcun problema!

Link al commento
Condividi su altri siti

 

Hai scritto in maniera errata il metodo.

Deve essere:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Corpo della funzione
}

...grazie...

 

Adesso chiedo una cosa più seria visto che questa si è risolta in un semplice errore di scrittura: se volessi aggiungere dei bottoni dinamici (con scritte provenienti da un URL online) in una UIActionSheet come devo fare?

	UIActionSheet *actionSheet = [[UIActionSheet alloc]initWithTitle:@"Scegli il giorno della guida TV da visualizzare" delegate:self cancelButtonTitle:@"Annulla" destructiveButtonTitle:nil otherButtonTitles:@"Oggi", nil];

	[actionSheet addButtonWithTitle:];
	[actionSheet addButtonWithTitle:];
	[actionSheet addButtonWithTitle:];
	[actionSheet addButtonWithTitle:];
	[actionSheet addButtonWithTitle:];
	[actionSheet addButtonWithTitle:];

	[actionSheet showFromRect:self.view.bounds inView:self.view animated:YES];
Link al commento
Condividi su altri siti

 

...grazie...

 

Adesso chiedo una cosa più seria visto che questa si è risolta in un semplice errore di scrittura: se volessi aggiungere dei bottoni dinamici (con scritte provenienti da un URL online) in una UIActionSheet come devo fare?

	UIActionSheet *actionSheet = [[UIActionSheet alloc]initWithTitle:@"Scegli il giorno della guida TV da visualizzare" delegate:self cancelButtonTitle:@"Annulla" destructiveButtonTitle:nil otherButtonTitles:@"Oggi", nil];

	[actionSheet addButtonWithTitle:];
	[actionSheet addButtonWithTitle:];
	[actionSheet addButtonWithTitle:];
	[actionSheet addButtonWithTitle:];
	[actionSheet addButtonWithTitle:];
	[actionSheet addButtonWithTitle:];

	[actionSheet showFromRect:self.view.bounds inView:self.view animated:YES];

 

Un appunto: nel caso il tuo progetto sia fatto per iOS8 l'approccio preferibile per le AlertView e le ActionSheet è quello di usare un controller appositamente studiato per quello: trattasi dell' UIAlertViewController. Dai un'occhiata alla documentazione per avere più dettagli.

 

Detto questo, il tuo non è tanto un problema dell'action sheet (a lei dai in pasto semplicemente dei pulsanti con un titolo ed un'azione associata), quanto della richiesta http che fai. 

Fai una richiesta http, ricevi la risposta dal server, fai il parsing della risposta (che immagino sarà un json o un xml) e da quello ne ottieni le informazion che ti servono.

Una volta ottenute le informazioni, che da come ne parli sarà una lista di giorni, le utilizzi per popolare l'actionsheet.

 

Ti consiglio comunque di aprire un nuovo thread, essendo questa richiesta off-topic, e ci inserisci qualche informazione in più, tipo il formato della risposta che ricevi dal server, e il codice che hai scritto finora. 

Link al commento
Condividi su altri siti

Un appunto: nel caso il tuo progetto sia fatto per iOS8 l'approccio preferibile per le AlertView e le ActionSheet è quello di usare un controller appositamente studiato per quello: trattasi dell' UIAlertViewController. Dai un'occhiata alla documentazione per avere più dettagli.

 

Detto questo, il tuo non è tanto un problema dell'action sheet (a lei dai in pasto semplicemente dei pulsanti con un titolo ed un'azione associata), quanto della richiesta http che fai. 

Fai una richiesta http, ricevi la risposta dal server, fai il parsing della risposta (che immagino sarà un json o un xml) e da quello ne ottieni le informazion che ti servono.

Una volta ottenute le informazioni, che da come ne parli sarà una lista di giorni, le utilizzi per popolare l'actionsheet.

 

Ti consiglio comunque di aprire un nuovo thread, essendo questa richiesta off-topic, e ci inserisci qualche informazione in più, tipo il formato della risposta che ricevi dal server, e il codice che hai scritto finora. 

...grazie, comunque, rispondendo alla tua prima affermazione, ti posso dire che il progetto è anche si per iOS 8... Se uso il controller specifico poi funziona anche con le versioni precedenti di iOS?

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...