tutorial objective mundo hola descargar compilador ios objective-c

ios - mundo - objective c vs c++



Actualizar vista de tabla? (4)

Debe conectar el Outlet en Interfacebuilder a su tableView de UITableview.

Creo que tengo una tarea bastante fácil, pero de alguna manera no quiere trabajar. Soy un principiante total en object-c, así que supongo que es un pequeño error. Todavía no sé realmente lo que hago, actualmente es más como copiar y pegar programación. Como si no supiera realmente si necesito el IBOutlet en la interfaz o como una propiedad o como ambas.

Lo que tengo:

Un ViewController con un botón, una etiqueta y una vista de tabla. El botón se conecta a un servidor de puntos compartidos y lee una lista y agrega el valor a una matriz. Esta parte funciona.

La salida de Delegate y DataSource está conectada a View Controller.

Lo que quiero:

La matriz debe ser el origen de datos de la Vista de tabla, así que solo quiero que se actualice después de haber leído los nuevos datos en la matriz. Aparecen los datos de prueba que agrego en la función viewDidLoad a la matriz. Así que supongo que de alguna manera conecté la matriz a la vista de tabla.

Te daré el código completo:

ViewController.h:

#import <UIKit/UIKit.h> @interface ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> { IBOutlet UILabel *output; IBOutlet UITableView *tableView; NSMutableData *webData; NSString *finaldata; NSString *convertToStringData; NSMutableString *nodeContent; } @property (nonatomic, retain) UILabel *output; @property (nonatomic, weak) IBOutlet UITableView *tableView; -(IBAction)invokeService:(UIButton *) sender; @end

ViewController.m:

#import "ViewController.h" @interface ViewController () { NSMutableArray *foundUrlaub; } @end @implementation ViewController @synthesize output; - (void)viewDidLoad { [super viewDidLoad]; // SOME TEST DATA... THIS SHOWS UP IN MY TABLE VIEW foundUrlaub = [[NSMutableArray alloc]init]; [foundUrlaub addObject:@"first cell"]; [foundUrlaub addObject:@"second cell"]; [foundUrlaub addObject:@"third cell"]; } -(IBAction)invokeService:(UIButton *) sender { // connection to sharepoint } -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { NSLog(@"didReceiveResponse"); [webData setLength:0]; } -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { NSLog(@"didReceiveData"); [webData appendData:data]; } -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { NSLog(@"ERROR with the Connection"); NSLog(error.description); } -(BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace { NSLog(@"canAuthenticateAgainstProtectionSpace"); return YES; } -(void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge { NSLog(@"didReceiveAuthenticationChallenge"); NSURLCredential *credential = [NSURLCredential credentialWithUser:@"XXXXXX" password:@"XXXXXX" persistence:NSURLCredentialPersistenceForSession]; [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge]; } -(void)connectionDidFinishLoading:(NSURLConnection *)connection { NSLog(@"DONE. Received Bytes: %d", [webData length]); convertToStringData = [[NSString alloc] initWithData:webData encoding:NSUTF8StringEncoding]; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(?<=ows_Title='')(.*)(?='' ows_MetaInfo)" options:0 error:NULL]; NSArray *matches = [regex matchesInString:convertToStringData options:0 range:NSMakeRange(0, [convertToStringData length])]; // HERE I LOAD SOME DATA IN THE ARRAY [foundUrlaub removeAllObjects]; for (NSTextCheckingResult *match in matches) { NSRange matchRange = [match rangeAtIndex:1]; NSString *matchString = [convertToStringData substringWithRange:matchRange]; NSLog(@"Match: %@", matchString); [foundUrlaub addObject:matchString]; // <- ADDS 3 STRINGS TO ARRAY } // THIS DOES NOT WORK! [tableView reloadData]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [foundUrlaub count]; } -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *simpleTableIdentifier = @"TableItem"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier]; } cell.textLabel.text = [foundUrlaub objectAtIndex:indexPath.row]; return cell; } @end



Usted está tratando de volver a cargar la tabla desde un hilo separado. por lo que UIView se puede cambiar desde el hilo principal, así que haz algo como esto:

[tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];


intente usar [_tableView reloadData]; No has @synthesize tu tableView en tu .m, así que tienes que usar el identificador autosintetizado