2011-08-16 11 views
0

ネットワーク接続中にビューページモーダルを設定する方法はありますか?私はページがネットワークに接続している場合、ユーザーの操作に応答しないすべてのコントローラを意味ですか?ネットワーク接続時にビューをモーダルにする方法


私は次のようにコードを更新:

- (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]; 
} 

と同じようにそれを示しています。私はコメントで言ったように、それはまだUISegmentedControlのボタンをカバーすることはできません

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

    } 
    else {   
     self.loadingView = nil; 

    } 
} 

、ユーザーがクリックすることができますそれらのボタン...

答えて

0

modalViewControllerを使用する代わりに、HUD(UIAct TTCatalogueアプリケーションで表示されるインジケータ)は、ビューをブロックし、リクエストしている間何かが起きていることをユーザーに知らせます。 [self.view addSubview:theHUDview];で挿入してください。

代わりに、バックグラウンドでネットワークを非同期に呼び出すようにしてください。

+0

ありがとうございました。本当に助かりました!しかし、私の場合は:データの開始負荷の応答ボタンのアクションをクリックし、ボタンは、ナビゲータUISegmentedControlに配置されているので、UIActivityIndi​​catorsは、それらのボタンをカバーすることができなかった、彼らはまだネットワーク接続中にクリックすることができます... –

+0

OK、私わかる。まあ、半ば透明な透明なビューから完全に作られたモーダルViewControllerを表示することを妨げるものは何もありません。 –

関連する問題