Как модально посмотреть при подключении к сети - PullRequest
0 голосов
/ 16 августа 2011

Есть ли способ установить модальный вид страницы при подключении к сети? Я имею в виду, что все контроллеры на странице не отвечают пользовательской операции, если сеть подключается?


Я обновил код как:

- (void)loadView
{
    [super loadView];
    _hudView = [[UIView alloc] initWithFrame:CGRectMake(75, 155, 170, 170)];
    _hudView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5];
    _hudView.clipsToBounds = YES;
    _hudView.layer.cornerRadius = 10.0;

    _activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    _activityIndicatorView.frame = CGRectMake(65, 40, _activityIndicatorView.bounds.size.width, _activityIndicatorView.bounds.size.height);
    [_hudView addSubview:_activityIndicatorView];
    [_activityIndicatorView startAnimating];

    _captionLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 115, 130, 22)];
    _captionLabel.backgroundColor = [UIColor clearColor];
    _captionLabel.textColor = [UIColor whiteColor];
    _captionLabel.adjustsFontSizeToFitWidth = YES;
    _captionLabel.textAlignment = UITextAlignmentCenter;
    _captionLabel.text = @"Loading...";
    [_hudView addSubview:_captionLabel];



    NSArray *buttonNames = [NSArray arrayWithObjects:@"hehe",@"xixi",nil];

    UISegmentedControl *segmentControl = [[UISegmentedControl alloc] initWithItems:buttonNames];
    segmentControl.frame = CGRectMake(0, 0, TTApplicationFrame().size.width/2, TT_ROW_HEIGHT-10); 
    segmentControl.segmentedControlStyle = UISegmentedControlStyleBar;
    segmentControl.momentary = NO;
    segmentControl.tintColor = [UIColor darkGrayColor]; 
    segmentControl.selectedSegmentIndex = 0;
    [segmentControl addTarget:self action:@selector(switchPage:) forControlEvents:UIControlEventValueChanged];
    self.navigationItem.titleView = segmentControl;
    TT_RELEASE_SAFELY(segmentControl);
    self.view = [[[UIView alloc] initWithFrame:TTApplicationFrame()] autorelease];
    self.tableView = [[[UITableView alloc] initWithFrame:TTApplicationFrame() style:UITableViewStylePlain] autorelease];
    self.tableView.rowHeight = 80.f;
    self.tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    [self.view addSubview:self.tableView];
    [self reload]; 
    [self updateView]; 
}

и покажите это как:

- (void)showLoading:(BOOL)show {
    if (show) {
        self.loadingView = _hudView;

    }
    else {        
        self.loadingView = nil;

    }
}

Как я уже сказал в комментарии, он все еще не может покрывать кнопки UISegmentedControl, пользователь все еще может нажимать эти кнопки ...

1 Ответ

0 голосов
/ 16 августа 2011

Вместо использования modalViewController, создайте HUD (один из приятных видов с UIActivityIndicators, который вы увидите в приложении TTCatalogue), который будет блокировать представление и информировать пользователя о том, что происходит, когда вы делаете запрос. Просто вставьте их с помощью [self.view addSubview:theHUDview];.

Это не обязательно хороший дизайн, хотя вместо этого делайте ваши сетевые вызовы асинхронно, в фоновом режиме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...