FSCopyObjectAsyncの引数で指定したcallbackに、
FSFileOperationStage stage
というオペレーションの状態を表す変数が渡されてくるので、これがkFSOperationStageCompleteだったらダイアログを閉じるようにすればいい、と本日わかった。
現在のところ、処理すべきファイルのURLをNSArrayに入れて、そこからファイルを一つずつ取り出してコピーする、という段取りで処理している。これだと、1つのファイルを処理するたびにダイアログが現れては消える。
ま、それでも素人のプログラミングだからいいんだろうけど、ここはやはり「複数のファイルが指定されたら、相対のコピーサイズの進捗状況と単体のファイルの進捗状況」を両方表示できるようにしたい。
そんなわけでFileCopyManagerというクラスを作り始める。
ファイルのArrayを受け取って、コピーそのものとダイアログで進行状況を表示する、という働きをする予定。
しかしのっけから.nibファイルを動的に読み込む、というところでつまずいて本日は終了。(^^;)
どーなることやら。
しかし考えてみれば非同期コピーが曲がりなりにも実現できたので、かなりの前進だな。喜ぼう。
追記:
nibの動的な読み込みもやってみればどうということはなかった。NSViewControllerでinitWithNibName;するのを、nib読み込みだけ自前でやる、という感じ。
1,ダイアログのxib内のFile's Ownerを予め動的に読み込む予定のクラスにしておく
2,読み込み元クラスでIBOutletを作って、xib内でつないでおく
3、読み込み元クラスのinitあたりで、[NSBundle loadNibNamed:]でnibを読み込む
読み込んだ時点でIBOutletも有効になるようだ。案ずるより産むが易し。Cocoaはこういうことが多いかも。
0 件のコメント:
コメントを投稿