Сбой приложения при использовании QBSimpleSyncRefreshControl в табличном представлении по запросу для обновления

Я использую контроллер вкладок, один из контроллеров представлений имеет табличное представление. Я использую QBSimpleSyncRefreshControl для обновления по запросу, он отлично работает при первой загрузке контроллера вкладок, когда я выхожу из системы, я перезагружаю свой контроллер вкладок (контроллер корневого представления), который приложение времени неожиданно зависло.

Это код, который я использую

в табличном контроллере

QBSimpleSyncRefreshControl *refreshControl = [[QBSimpleSyncRefreshControl alloc] init];
refreshControl.delegate = self;
self.myRefreshControl = refreshControl;
[self.tvTableView addSubview:self.myRefreshControl];

я сделал при выходе из системы

 UIStoryboard *board  = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
 UINavigationController *Tabctrl = [board instantiateViewControllerWithIdentifier:@"vcInitialViewNavId"];
 UIWindow *window = AppDelegate.window;
 [window addSubview:Tabctrl.view];
 window.rootViewController = Tabctrl;

Если я заблокирую эту линию

[self.tvTableView addSubview:self.myRefreshControl];

Приложение работает нормально, если разблокировать это приложение, происходит сбой при выходе из системы (перезагрузите контроллер корневого представления)

Может ли кто-нибудь помочь в этом.


Полный код здесь:

Файл view.h

@interface MyTCView : UIViewController <UICollectionViewDataSource, UICollectionViewDelegate, QBRefreshControlDelegate>
{
   // some declaration here
}

@property (weak, nonatomic) IBOutlet UITableView *tvTableView;

@property (nonatomic, strong) QBSimpleSyncRefreshControl *myRefreshControl;

вид.м

- (void)viewDidLoad
{
    [super viewDidLoad];

    FeaturedItemTitle = @"";

    HUD = [[MBProgressHUD alloc] initWithView:self.view];
    HUD.mode = MBProgressHUDModeIndeterminate;
    [self.view addSubview:HUD];

    AppDelegate = (TCAppDelegate *) [UIApplication sharedApplication].delegate;
    board = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

    QBSimpleSyncRefreshControl *refreshControl = [[QBSimpleSyncRefreshControl alloc] init];
    refreshControl.delegate = self;
    self.myRefreshControl = refreshControl;
    [self.tvTableView addSubview:self.myRefreshControl];
}

- (void)refreshControlDidBeginRefreshing:(QBRefreshControl *)refreshControl
{
     [self GetDetails];
}

-(void) GetDetails
{
    // Calling web service here 

  NSString *strURL = @"URL HERE";

  NSURL *url = [NSURL URLWithString: strURL];

    NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];

    [theRequest addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];

    [theRequest setHTTPMethod:methodType];

    NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:delegate];

    if ( theConnection ) {
        //Connection successful
        receivedData = [NSMutableData data];
    } else {
        //Failure
        NSLog(@"Error");
    }
}

//*** HTTP Connection ***//

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    receivedData = [[NSMutableData alloc] init];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [receivedData appendData:data];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    [HUD hide:YES];
    [self ShowAlertMessage:ServerErrorMsg Tilte:@""];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSError *error;

    NSDictionary *res = [NSJSONSerialization JSONObjectWithData:receivedData options:NSJSONReadingAllowFragments error:&error];

        // Array of data get from Res(NSDictionary)

        [tvTableView reloadData]; // Tableview Reload

        [collView reloadData]; // Collectionview reload

        [self.myRefreshControl endRefreshing];

        [HUD hide:TRUE]; 
}

person Rajesh    schedule 19.12.2013    source источник
comment
@rmaddy: я размещаю здесь код, пожалуйста, проверьте.   -  person Rajesh    schedule 23.12.2013
comment
где ваш корневой контроллер, я думаю, навигационный контроллер, у вас есть? и вы не можете subView контроллер   -  person Retro    schedule 23.12.2013
comment
Да, мой Rootviewcontroller - это только контроллер навигации. извините, я не могу вас понять, какие изменения должны быть там для решения этой проблемы.   -  person Rajesh    schedule 24.12.2013


Ответы (1)


Я думаю, что это неправильный способ выхода из приложения на основе навигационного контроллера, просто используйте стандартный способ загрузки корневого контроллера с помощью

 [self.navigationController popToRootViewControllerAnimated:YES];
person Retro    schedule 19.12.2013
comment
Если бы мне это нравилось, мои контроллеры не обновляли загруженные данные, которые все еще находились бы в контроллерах. - person Rajesh; 20.12.2013
comment
у вас есть tableView для отображения данных? - person Retro; 20.12.2013
comment
Да, у меня есть таблица в viewcontroller - person Rajesh; 23.12.2013
comment
SO вы можете вызвать tableView reloadData - person Retro; 23.12.2013
comment
Да, я вызываю функцию перезагрузки - (void)refreshControlDidBeginRefreshing:(QBRefreshControl *)refreshControl { [self GetMyTCDetails]; } Но проблема возникает, когда я выхожу из системы, я пытаюсь перезагрузить rootviewcontroller, и в этот раз происходит сбой только приложения. - person Rajesh; 23.12.2013