0

UITableViewで、配列を昇順と降順でそれぞれ並べ替えるための2つの別々のボタンがあります。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

     checkButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        checkButton.frame = CGRectMake(540, 30, 42, 42);
        [checkButton setBackgroundImage:[[UIImage imageNamed:@"Down Arrow.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:0.0] forState:UIControlStateNormal];
        [checkButton addTarget:self action:@selector(descender:) forControlEvents:UIControlEventTouchUpInside];
        [checkButton setTag:200];
        [cell.contentView addSubview:checkButton];


        checkButton1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        checkButton1.frame = CGRectMake(600, 30, 42, 42);
        [checkButton1 setBackgroundImage:[[UIImage imageNamed:@"Up Arrow.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:0.0] forState:UIControlStateNormal];
        [checkButton1 addTarget:self action:@selector(ascender:) forControlEvents:UIControlEventTouchUpInside];
        [checkButton1 setTag:100];
        [cell.contentView addSubview:checkButton1];

checkButton = (UIButton *)[cell viewWithTag:200];
        if (indexPath.row == 0 && appDelegate.a == 300)
        {
            checkButton.hidden = NO;
            checkButton1.hidden = YES;
        }

        checkButton1 = (UIButton *)[cell viewWithTag:100];
        if ((lastSectionIndex == indexPath.section && lastRowIndex == indexPath.row ))
        {
            checkButton.hidden = YES;
            checkButton1.hidden = NO;
        }
}

cellforrowAtIndexPathに、並べ替え用の2つのボタンを追加しました。そして、ソートボタンをクリックすると、そのソートボタンが消え、完了ボタンが表示されるはずです。そして、私はそれを次のように与えました、

-(void)sortItem:(id)sender
{
         NSLog(@"sort clicked");

         if(appDelegate.a = 300)
         {
               checkButton.hidden = NO;
               checkButton1.hidden = YES;
         }

          self.navigationItem.title = @"Sort Book Shelf";

          sortButton.hidden = YES;
          editButton.hidden = YES;
          doneButton.hidden = NO;

   //    if (appDelegate.b == 400) 
  //    {
 //        checkButton.hidden = NO;
 //        checkButton1.hidden = NO;
 //    }

      [editTable reloadData];
}

次に、[並べ替え]ボタンをクリックすると、これら2つのチェックボタンが表示され、[完了]ボタンをクリックすると、これら2つのボタンが消えます。

-(void)doneClick:(id)sender
{
       NSLog(@"Done Clicked");

       if (appDelegate.b == 400) 
       {
            checkButton.hidden = YES;
            checkButton1.hidden = YES;
       }

       self.navigationItem.title = @"Edit Book Shelf";

       sortButton.hidden = NO;
       editButton.hidden = NO;
       doneButton.hidden = YES;
  }

現在、並べ替え機能が正常に機能しています。しかし、完了ボタンをタップしているとき、ボタンが最初と最後のインデックスにあるという条件を与えたので、私のボタンはセルパスから消えません。DONEボタンクリックでのみ2つのボタンを非表示にするにはどうすればよいですか?よろしくお願いします。

4

3 に答える 3

0

重複する質問である可能性があるため、SOFで質問する前に、まずgoogleで検索してみてください

.h

NSIndexPath *selectedIndexPath;

.m

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    //  . . Some Code . . .
    if ( selectedIndexPath.row = indexPath.row &&  selectedIndexPath.section = indexPath.section ) {
        button1.hidden = NO;
        button2.hidden = NO;
    } else {
        button1.hidden = YES;
        button2.hidden = YES;
    }
    //  . . Some Code . . .
}

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
    selectedIndexPath = indexPath;
    [tableView relaodData];
}

uitableviewCellにボタンを追加し、次のセル選択で前を削除する方法

于 2013-01-11T09:08:40.187 に答える
0

button内にメソッド ブロックを指定しますtableView begin and end updates。お気に入り

-(void)doneClick:(id)sender
{
   NSLog(@"Done Clicked");
   [tableView beginUpdates];
   if (appDelegate.b == 400) 
   {
        checkButton.hidden = YES;
        checkButton1.hidden = YES;
   }
   [tableView endUpdates];
   self.navigationItem.title = @"Edit Book Shelf";

   sortButton.hidden = NO;
   editButton.hidden = NO;
   doneButton.hidden = YES;
}
于 2013-01-11T09:09:51.260 に答える
0

doneClickでもリロードデータを呼び出してみてください。

[editTable reloadData];
于 2013-01-11T09:02:22.663 に答える