0

テーブル内のセルをクリックすると、多くのアイテムを含むテーブルビューがあり、Webビューアウトレット付きのビューが読み込まれます。viewdidloadのWebビューには、HTMLファイルを読み込むためのこのコード行があります。プロジェクトファイル

NSString *name = pagename.text;
[WebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:name ofType:@"html"]isDirectory:NO]]];

選択したセルからそのWebビューにプッシュするコードは、テストと呼ばれます。

if (indexPath.row == 0) 
{

    Test *test = [[Test alloc] initWithNibName:nil bundle:nil];
    test.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:test animated:YES];

    NSString *name1 = @"ba";
    [[test pagename] setText:[NSString stringWithString:(NSString *)name1]];

}

else if (indexPath.row == 1) 
{

    Test *test = [[Test alloc] initWithNibName:nil bundle:nil];
    test.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:test animated:YES];

    NSString *name1 = @"bb";
    [[test pagename] setText:[NSString stringWithString:(NSString *)name1]];

}

else if (indexPath.row == 2) 
{

    Test *test = [[Test alloc] initWithNibName:nil bundle:nil];
    test.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:test animated:YES];

    NSString *name1 = @"bc";
    [[test pagename] setText:[NSString stringWithString:(NSString *)name1]];

}

htmlファイルはba、bb、bcおよびbd.htmlと呼ばれます

問題は、テーブルにある4つのセルのいずれかを選択すると、同じhtmlファイル「ba.html」が表示されることです。

私はすべてを試し、プロジェクトをクリーンアップし、ファイルを削除してコピーし直し、シミュレーターを変更し、ラップを再開し、ファイル名も変更しました。

何か助けはありますか?

前もって感謝します

アップデート :

これはホールコードです

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [array count];
}


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

    static NSString *CellIdentifier = @"CustomCell";


    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    [[cell textLabel] setTextAlignment:UITextAlignmentRight];

    cell.textLabel.text = [array objectAtIndex:indexPath.row];
    cell.textLabel.font = [UIFont systemFontOfSize:18];
    cell.textLabel.numberOfLines = 3;

    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    if (indexPath.row == 0) 
    {

        Test *test = [[Test alloc] initWithNibName:nil bundle:nil];
        test.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
        [self presentModalViewController:test animated:YES];

        NSString *name1 = @"ba";
        [[test pagename] setText:name1];

    }

    else if (indexPath.row == 1) 
    {

        Test *test = [[Test alloc] initWithNibName:nil bundle:nil];
        test.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
        [self presentModalViewController:test animated:YES];

        NSString *name1 = @"bb";
        [[test pagename] setText:name1];        
    }

    else if (indexPath.row == 2) 
    {

        Test *test = [[Test alloc] initWithNibName:nil bundle:nil];
        test.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
        [self presentModalViewController:test animated:YES];

        NSString *name1 = @"bc";
        [[test pagename] setText:name1];
    }

    else if (indexPath.row == 3) 
    {

        Test *test = [[Test alloc] initWithNibName:nil bundle:nil];
        test.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
        [self presentModalViewController:test animated:YES];

        NSString *name1 = @"bd";
        [[test pagename] setText:name1];

    }
}
4

2 に答える 2

1

ページを設定する前に、コントローラーを提示しています。

Webviewクラスで「name」をNSStringインスタンス変数にします。それをプロパティ(非アトミック、保持)にして、合成します。

ビューコントローラのラベルを設定する代わりに、名前を設定します。次に、viewDidLoadで、名前からラベルを設定します。

名前からラベルを設定します。その逆ではありません。

セル内で選択されたもの:

Test *test = [[Test alloc] initWithNibName:nil bundle:nil];
test.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
NSString *name1 = @"bc";
[test setName:[NSString stringWithString:(NSString *)name1]];
[self presentModalViewController:test animated:YES];

Webビューでviewdidload

-(void)viewDidLoad {
    pagename.text = self.name;
    [WebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:name ofType:@"html"]isDirectory:NO]]];
}
于 2012-04-11T17:34:44.363 に答える
0

indexPath.rowが常に0であるかどうかを確認するために、ブレークポイントまたはログを配置できますか?

この場合、各要素が独自のセクションにあるようにテーブルが作成される可能性があります。次に、各オブジェクトがそれ自体のセクションの行0になるため、indexPath.sectionを使用する必要があります。

また、どのタイプのオブジェクトが「pagename」であるかはわかりませんが、セッターは通常パラメーターを保持するため、でname1のコピーを作成する必要はありません。

[[test pagename] setText:[NSString stringWithString:(NSString *)name1]];

注:これは、プロパティがクラスでどのように宣言されているかによって異なりますが、通常、これらのタイプのプロパティは保持されます。

于 2012-04-11T17:38:36.150 に答える