ここで少し問題があります。ユーザーがビデオをサーバーにアップロードできるようにしていますが、進行状況を説明するために使用しているビューを管理するのに問題があります。問題が発生している理由はわかっています。それを回避する方法(一種の)ここで私の問題
したがって、次のようなコードを作成しようとすると (UIViewController で)
-(void)uploadMovie
{
UIActivityView indicator=new...
[self.view addSubview:indicator]
[uploader UploadMyMovie:data]
}
このコードは機能しません。アップローダーはコントローラーをロックし、インジケーターが画面に表示されるまでの時間を許可しません。アップローダーを呼び出す前に数秒待っていることがわかりましたが、別のアプローチを取りました。
アプローチは、アップローダの新しいスレッドを開始し、アップローダ オブジェクトがアップロードの開始時、進行状況、およびアップロードの終了時に UIViewController (または何らかのデリゲート) に通知するプロトコルを持つことでした。何かのようなもの
-(void)uploadMovie
{
UIActivityView indicator=new...
[self.view addSubview:indicator]
NSThread *thread=...
[thread start]
}
デリゲートメソッドは次のようになります
#pragma mark UploadProgressDelegate
-(void)didStartUploading
{
progressLabel= [[UILabel alloc] initWithFrame:CGRectMake(93, 240, 116, 32)];
ind= [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
ind.center=self.view.center;
[progressLabel setTextColor:[UIColor blackColor]];
[progressLabel setText:@"TEST"];
[self.view addSubview:progressLabel];
[self.view addSubview:ind];
[ind startAnimating];
[self.view bringSubviewToFront:progressLabel];
[ind setHidesWhenStopped:TRUE];
[self.view setUserInteractionEnabled:FALSE];
}
-(void)progressUpdate:(NSString*)progress
{
[progressLabel setText:progress];
}
-(void)didEndUploading;
{
[progressLabel removeFromSuperview];
[ind stopAnimating];
[ind removeFromSuperview];
[progressLabel release];
[ind release];
[self.view setUserInteractionEnabled:TRUE];
}
これはうまく機能し、インジケーターが表示され、すべてが表示されます。その後、UILabel (上記のコードに反映されています) を追加して進行状況をユーザーに表示することにしましたが、このソリューションは機能せず、ラベルは表示されず、もちろん更新もありません...
誰かがこの状況に遭遇し、その解決策を思いついたのではないかと思っていましたか? または、上記のコードから、ラベルが表示されない理由を確認できる場合...
ありがとう