iOSでのtableview 2級のセルの展開と回収の例示的なコード


文章の内容の制限のため、私達は引き続き上記の内容で展開します。上記の案にはまだ問題があります。もし複数のアクションを展開し、展開するアクションがスクリーンの上にないならば、私達がスライドした時に再びスクリーンに戻った時、展開のアイコンは下の図のようになります。

具体的に分析してみます。まず多重化の問題を考えて、セレクションが表示される時、多重化池の中からIDのようなセレクションを見つけました。その後、セレクションを見つけて、直接使って、ここで表示された内容を修正しただけです。セレクションの中のアイコンは展開状態ですか?それとも展開状態ですか?はい、ここに来て問題の所在を分析します。じゃ、私達はプログラムを修正しているべきですか?セレクションが表示されるときは、セレクションが展開されているアイコンの状態を判断して、正しい画像に設定します。私たちはGetView ForHeaderに下記のコードを追加します。

//         ,          
f (Title [(int)section].ExplandFlag) { 
headerView.ExplandButton.SetImage (UIImage.FromBundle ("arrowD"), UIControlState.Normal); 
 else { 
headerView.ExplandButton.SetImage (UIImage.FromBundle ("arrow"), UIControlState.Normal); 
プログラムにはまだいくつかの穴があります。いくつかのアクションが回収されると、アイコンが足りなくなります。下図のように:

ここはどういう理由ですか?私達はよく考えてみます。多重池からセレクションを取った時、元のボタンは90度回転しました。そして直接に対応する写真を変えました。そしてクリックして回収します。ボタンはこの写真を持ってまた回転し始めますので、エラーが発生します。じゃ、私達は写真を回転させる時に、画像の対応を修正します。コードは以下の通りです。

//      
Title[(int)section].ExplandFlag=false; 
//      
UIButton explandButton=(UIButton)sender; 
explandButton.SetImage (UIImage.FromBundle ("arrow"), UIControlState.Normal); 
myTabViSource.ReturnRotate(explandButton); 
//     
int length=Title[(int)section].SecondTitle.Count; 
NSIndexPath[] arrayIndexPath=new NSIndexPath[length]; 
for(int i=0;i<length;i++) 
{ 
  arrayIndexPath[i]=NSIndexPath.FromRowSection((nint)i,section); 
} 
tableview.DeleteRows(arrayIndexPath,UITableViewRowAnimation.Automatic); 
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。