0

UITabBarViewControllerは2つのビューを持っています。最初のビューには、UITableView1つのセクションと5つの行があるがあります。2番目のビューにも、UITableViewUISwitchなどの設定オプションがあります。私の質問は、設定ビューでUISwitchを使用して、最初のビューからセルを表示および非表示または削除するにはどうすればよいですか?前もって感謝します。

編集

このビデオは私がやろうとしていることを説明しています(アプリビューを確認してください)

ここを押してください

4

3 に答える 3

1

UISwitchを変更するたびに、テーブルビューをリロードする必要があります。例:-UISwitchからUITabBarViewController(またはイベントを制御するクラス)へのデリゲートを設定します-テーブルビューのセル番号を変数に格納する必要があります-この変数は、UISwitchが変更されるたびに変更されます-変数が変更された後、テーブルビューをリロードする必要があります

于 2012-09-03T10:53:23.280 に答える
1

NSNotificationCenterを使用してこれを実現できます

firstViewでは、次のようなコードを記述できます。

 -(void)viewDidLoad{
 [[NSNotificationCenter defaultCenter] removeObserver:self];
 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(modifyCell:) name:@"modifyCell" object:nil];
 }

   //make sure this is declared in your .h
 -(void)modifyCell:(NSNotification*)notif
  {
    if (notif) {
              //cellindex to modify
    NSString *cellIndex = [[notif userInfo] objectForKey:@"index"];
    [yourDataSource removeObjectAtIndex:[cellIndex intValue]]
    [yourTableView reloadData];
     }
  }

あなたのsecondViewで:

  -(void)switchChanged
  {
     NSNotificationCenter *ncSubject = [NSNotificationCenter defaultCenter]; 
     NSDictionary* dict = [NSDictionary dictionaryWithObjectsAndKeys:@"indexNum",@"index", nil];
      [ncSubject postNotificationName:@"modifyCell" object:nil userInfo:dict];
      [ncSubject removeObserver:self];
  }
于 2012-09-03T10:59:15.077 に答える
1

テーブルビューコントローラのviewWillAppearメソッドで、設定が変更されているかどうかを確認します。変更されている場合は、reloadDataメソッドを呼び出してセルを再描画します。場合によっては、performSelectorOnMainThreadを介してreloadDataを呼び出すことが推奨されます。

[ self performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO]

また、データ読み込みメソッド(numberOfSectionsInTableView、numberOfRowsInSection、cellForRowAtIndexPathなど)は、それに応じて設定値を考慮する必要があります。

于 2012-09-03T11:21:31.187 に答える