2014-09-08 4 views
0

я создаю кнопку для добавления ученика, я делаю метод дескриптором, отображая поп-меню (вид предупреждения) , затем введите код, введенный в переменную, называемую результатом (NSString), а затем называется веб-службой получить необходимые данные из моего веб-службыxcode - обновить tableview после вызова метода из класса anther

- (IBAction)add_button:(id)sender { 
     [self addStudent]; 
    } 

- (void) addStudent { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Add Student" message:@"Enter Connection Code" delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:@"Add", nil]; 
     [alert setAlertViewStyle:UIAlertViewStylePlainTextInput]; 
     [alert show]; 
    } 

-(void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 
     result = [[alertView textFieldAtIndex:0] text]; 
     NSLog(@"the result connection code %@",result); 
     WebService *web = [[WebService alloc]init]; 
     [web retriveDataWithCodeAndUrl:result Andurl:STUDENT_URL]; 
    } 

в веб-классе обслуживания после завершения загрузки и получить необходимые данные мне нужно назад мой TableView и обновить его с новыми данными я попробовать протокол, но doent работать, так что я стараюсь сделать экземпляр класса tableview , я также пытаюсь сделать уведомление, чтобы обработать его и обновить представление (вебсервис класс)

-(void) connectionDidFinishLoading :(NSURLConnection *) connection{ 
    NSLog(@"data finish loading "); 
    School_TableViewController *home = [[School_TableViewController alloc]init]; 
    [home didFinishWithData:respone]; 
    [[self delegate]didFinishLoadingwithData:respone]; 
    [[NSNotificationCenter defaultCenter] 
    postNotificationName:@"TestNotification" 
    object:self]; 
    } 

назад к моему столу классу представления для обработки уведомлений и обновить таблицу

- (void) receiveTestNotification:(NSNotification *) notification 
{ 
    if ([[notification name] isEqualToString:@"TestNotification"]) 
     NSLog (@"Successfully received the test notification!"); 
    [self.tableView reloadData]; 
} 

но dosnt работы, мне нужен хороший способ общения между одноточечным и Tableview и методом обновить вид

спасибо заранее

+1

Как у не проходит никакого NewData ур TableView. Вы просто вызываете перезагрузку со старыми данными. Поэтому, когда вы получите ответ для webservice, проанализируйте его или просто передайте его в соответствии с логикой ur в tableview, а затем вызовите перезагрузку. – nikhil84

+0

Я не передавал новые данные, я просто заполнял свой массив новыми данными, но когда он вернулся к методу уведомления, он возвращает nil (массив имен), я передаю новые данные в свой метод уведомления –

+0

ур отправляет «я» в уведомлении и никаких данных , а также я не вижу, где эта newdata заполняет массив методом receiveTestNotification – nikhil84

ответ

1

Конечно doen't работу, потому что вы не обновляли Данные для вашей tableView

, и я удивляюсь, почему вы не использовали delegate didFinishLoadingwithData

использования делегата:

-В School_TableViewController.h:

@interface School_TableViewController : UITableViewController <YourWebServiceDelegate> 

-В School_TableViewController.m:

-(void) didFinishLoadingwithData:(NSData*) data { 
     // Do parse respone data method and update yourTableViewData 
      yourtableViewData = notification.object 
      [self.tableView reloadData]; 
    } 

или попробуйте использовать

-В класс обслуживания

-(void) connectionDidFinishLoading :(NSURLConnection *) connection{ 
    NSLog(@"data finish loading "); 
/* remove this code you don't need alloc School_TableViewController 
     School_TableViewController *home = [[School_TableViewController alloc]init]; 
     [home didFinishWithData:respone]; 
*/ 
    [[self delegate]didFinishLoadingwithData:respone]; 
    [[NSNotificationCenter defaultCenter] 
    postNotificationName:@"TestNotification" 
     object:response]; 
} 

-В вашей Tableview

- (void) receiveTestNotification:(NSNotification *) notification 
{ 
    if ([[notification name] isEqualToString:@"TestNotification"]) 
     NSLog (@"Successfully received the test notification!"); 
    // Do parse respone data method and update yourTableViewData 
    yourtableViewData = notification.object 
    [self.tableView reloadData]; 

} 
+0

Мой делегат dosnt работает, я хочу знать почему? другой способ работы, но, пожалуйста, объясните, как использовать делегат для передачи данных. –

+1

вы прочитали это http://www.tutorialspoint.com/ios/ios_delegates.htm –

+1

Я думаю, что у вас не было webservice.delegate = self в School_TableViewController поэтому ваш делегат не может работать нормально. Извините, потому что я плохо разбираюсь в Eng и объясняю это вам следует попробовать прочитать https://developer.apple.com/library/mac/documentation/general/conceptual/devpedia-cocoacore/Protocol.html –

Смежные вопросы