0

ストーリーボードでの私のプロジェクト構造は次のとおりです。

ナビゲーション ビュー コントローラー ------> メイン ビュー コントローラー ------> 2 つの子ビュー コントローラー

2 つの子ビュー コントローラーのそれぞれに、個別のテーブルとビュー コントローラーがあります。

以下のコードはまったく問題なく動作していますが、私が直面している問題は、このテーブルでインデックス 2 を選択するとします (チェックマークの画像が表示されます): メインの ViewController に移動しますが、メインの ViewController からボタンをタップして別の子ビューに移動すると、その子ビューが開き、インデックス 2 に既にチェックマークの画像が表示されます (逆も同様です)。

これが私の ChildViewControllers の 1 つのコードです。

#import "MainVC"
#import "ChildVC"
@interface ChildVC ()
@end

@implementation ChildVC

NSIndexPath *lastIndexPath;


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    tableArr =[[NSMutableArray alloc] initWithObjects:@"a",@"b",@"c",@"d",@"e",@"f",@"Other",nil];
    self.navigationItem.leftBarButtonItem=nil;
    self.navigationItem.hidesBackButton=YES;
    self.navigationItem.title = @"Select Language";
}

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

    [cell setSelectionStyle:UITableViewCellSelectionStyleNone];

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10,10, 300, 30)];
    [cell.contentView addSubview:label];
    label.text = [tableArr objectAtIndex:indexPath.row];
    label.tag = 1;
    label.textColor = [UIColor colorWithRed:47.0f/255.0f green:111.0f/255.0f blue:182.0f/255.0f alpha:1.0f];
    UIImageView *checkmark = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"coloredCheckmark.png"]];
    cell.accessoryView = checkmark;
    return cell;
}

- (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath 
{    
    lastIndexPath = indexPath;
    [tableView reloadData];

    // Here I am sending the Value of Selected Row to Main View Controller and storing in typelabel.text
    UITableViewCell *cell1 = [tableView cellForRowAtIndexPath:indexPath];
    UILabel *lbltemp = (UILabel *)[cell1 viewWithTag:1];
    _parent.typelabel.text = lbltemp.text;

    [self.navigationController popViewControllerAnimated:YES];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 9;
}

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell      forRowAtIndexPath:(NSIndexPath *)indexPath 
{
    if ([lastIndexPath isEqual:indexPath]) {
        cell.accessoryView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"iphone-checkMark.png"]];
    } else {
        cell.accessoryView = nil;
    }
} 

@end
4

0 に答える 0