私はこのアプリを継承しました(そして、私は6人の人と1人の代理店のようにパイの中に指を入れて、大きなボールのボールにうまく収まるようにしています)特定の行を編集する機能。これらの行は、ユーザがUINavigationItemボタンに触れると編集可能になります。UITableViewCellからのオブジェクトの削除
私が行ったことは、プロパティ(bCanEdit)としてBOOLを設定し、ユーザーがボタンに触れると、セレクタでこのフラグをNOからYESに変更します。次に、テーブルのreloadDataを呼び出します。 cellForRowAtIndexPathでは、私はこのコードを持っている:
UITableViewCell *cell = nil;
cell.accessoryType = UITableViewCellAccessoryNone;
if ([indexPath section] == kStaticSection) {
cell = [self.tableView dequeueReusableCellWithIdentifier:staticCellId];
switch ([indexPath row])
{
case kPhoneCell:
{
cell.textLabel.text = @"Phone:";
if (!self.bNeedsEdit) {
if (cell.contentView.subviews.count > 0) {
for(id thisItem in cell.contentView.subviews) {
if ([thisItem isKindOfClass:[UITextField class]]) {
[thisItem removeFromSuperview];
} }
}
cell.detailTextLabel.text = self.customer.formattedPhone;
} else {
UITextField* txtPhone = [[UITextField alloc] initWithFrame:CGRectMake(cell.detailTextLabel.frame.origin.x, cell.detailTextLabel.frame.origin.y-4.0, 400.0, 24.0)];
txtPhone.text = self.customer.formattedPhone;
txtPhone.borderStyle = UITextBorderStyleRoundedRect;
txtPhone.tag = 92;
txtPhone.delegate = self;
txtPhone.keyboardType = UIKeyboardTypeNumberPad;
[cell.contentView addSubview:txtPhone];
cell.detailTextLabel.text = @"";
}
break;
}
これは私が編集するユーザーのために必要なテキストフィールドを追加するため正常に動作しますが、問題は、ユーザーがプロセスをキャンセルしたときに付属しています。私は表のセルを静的な状態に戻す必要があります。
if (cell.contentView.subviews.count > 0) {
for(id thisItem in cell.contentView.subviews) {
if ([thisItem isKindOfClass:[UITextField class]]) {
[thisItem removeFromSuperview];
} }
}
を基になるcell.detailTextLabelは、ユーザーがスクロールテーブルまで表示されません。
コードのこの部分は、テキストフィールドを除去するための作業を行います。プログラムでテーブルをスクロールしようとしましたが、うまくいきませんでした。
すべてのアイデアをいただければ幸いです。
あなたが編集モードでは、このセルを持っているし、状態を変更しないのはなぜ、あなたが 'UITextField'を隠すことができない場合は、' UITextField'を表示する必要があります。 –