0

これを機能させる方法がわからないので、ますますイライラしています。私は検索して検索しましたが、これを私がやりたいことをさせるのに役立つものは何もないようです。

私が達成しようとしていること: ユーザーが上部に UITextField を使用して入力するタスクを取得して、入力をテキストとして、その左側にチェックボックスを付けて新しいセルを追加しようとしています。セルをタップすると、チェック ボックスがチェック マークの付いたチェック ボックスに変わり、セル全体の不透明度が 50% に変わります。また、セルを左から右にスワイプすると、セルが削除ボタンでポップアップするようにしたいと思います。

どうすればこれをすべて実現できますか?私は現在、属性インスペクターを使用して UITextField を .xib に追加し、そのように見えるようにしています。また、属性インスペクターを使用して変更したツールバーも上部にあります。

これらをアクションに接続するためのコーディングは何も行われておらず、.xib に置かれているだけです。

これが私が作成したレンダリングのイメージです。(私が取得しようとしているもの)

http://i.imgur.com/rTKnvud.png

.xib の Xcode でこれまでに持っているものを次に示します。

http://i.imgur.com/wfcVOrY.png

よろしくお願いします、ジェイコブ

4

2 に答える 2

0

プログラムでボタンをセルに追加するか、カスタムセルを作成する必要があります。ユーザーがセルまたはチェックボックスをタップすると、ボタンの画像を選択したチェックボックスに変更できます。チェックボックスを適切に表示するには、NSMutableArray を取得し、以下のコードを使用します。

ノート

1. specialNeedsList is a array which I'm using to display data on cell.
2. selectedSpecialNeed is a Mutable Array which I'm using to store selected/checked values
3. I'm using checkbox button for UITableViewCell accessory view. IN your case code will be little bit different.

このチュートリアルに従って、タップされたボタンの行を取得し、コードも合わせてください。これを達成するためのアイデアが得られます。私が何をしていて - (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath も、UIButton のアクションでこれを行う必要があります。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    NSInteger returnValue = 1;
    return returnValue;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    NSInteger returnValue = 0;
    returnValue = ([self.specialNeedsList count] > 0) ? [self.specialNeedsList count]:0;
    return returnValue;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];

            UIButton * btnShare = [[UIButton alloc] initWithFrame:CGRectMake(0,0,30,30)];
            [btnShare setImage:[UIImage imageNamed:@"checkbox.png"] forState:UIControlStateNormal];
            [btnShare setImage:[UIImage imageNamed:@"checkboxChecked.png"] forState:UIControlStateHighlighted];
            [btnShare setImage:[UIImage imageNamed:@"checkboxChecked.png"] forState:UIControlStateSelected];
            [btnShare addTarget: self  action: @selector(accessoryButtonTapped:withEvent:)
               forControlEvents: UIControlEventTouchUpInside];

            cell.accessoryView = btnShare;
            [btnShare release];
        }
    NSString* subAreaOfStudy = [self.specialNeedsList objectAtIndex:indexPath.row];
    if (self.specialNeedsList && [self.specialNeedsList count] > 0) {
        [cell.textLabel setFont:[UIFont systemFontOfSize:15.0f]];
        cell.textLabel.text = [self.specialNeedsList objectAtIndex:indexPath.row];
    }
    BOOL isShared = ([self.selectedSpecialNeeds count] > 0 && ([self.selectedSpecialNeeds indexOfObject:subAreaOfStudy] != NSNotFound));

    UIButton* btnShare = (UIButton*)cell.accessoryView;
    btnShare.selected = isShared;
    [btnShare setNeedsDisplay];

    return cell;

}

- (void) accessoryButtonTapped: (UIControl *) button withEvent: (UIEvent *) event{

    NSIndexPath * indexPath;
    indexPath = [tblVSpecialNeeds indexPathForRowAtPoint: [[[event touchesForView: button] anyObject] locationInView:tblVSpecialNeeds]];
    if ( indexPath == nil )
        return;

    [self tableView:tblVSpecialNeeds accessoryButtonTappedForRowWithIndexPath:indexPath];
}

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{
    NSString *draft = [self.specialNeedsList objectAtIndex:indexPath.row];

    BOOL recordAlreadySelected = ([self.selectedSpecialNeeds indexOfObjectIdenticalTo:draft] != NSNotFound);
    if(recordAlreadySelected) {
        [self.selectedSpecialNeeds removeObject:draft];

    }
    else {
        [self.selectedSpecialNeeds addObject:draft];
    }
    [tblVSpecialNeeds reloadData];


}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row > [self.specialNeedsList count]-1) {
        [tableView deselectRowAtIndexPath:indexPath animated:YES];
        return;
    }
    [self tableView:tblVSpecialNeeds accessoryButtonTappedForRowWithIndexPath:indexPath];

}
于 2013-05-28T02:07:50.487 に答える
0

スワイプで削除するには、Tableview の Delegate メソッドを使用します。

  • (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

    [arrAddData removeObjectAtIndex:indexPath.row];

    [tbldata reloadData];

于 2013-05-28T06:28:46.657 に答える