0

我有一个包含很多项目的表格视图,当我单击表格中的一个单元格时,它会加载一个带有 web 视图插座的视图,在 viewdidload 的 web 视图中,我有这行代码来加载 html 文件,它位于项目文件

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

从所选单元格推送到该 Web 视图的代码称为 Test 是

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

问题是当我选择表格中四个单元格中的任何一个单元格时,它会显示相同的 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?

如果是这种情况,那么您的表可能是以每个元素都在其自己的部分中的方式创建的。然后,您将不得不使用 indexPath.section,因为每个对象都是其自己部分的第 0 行。

另外,我不知道“pagename”是哪种类型的对象,但是设置器通常会保留参数,因此您不必在其中创建 name1 的副本

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

注意:这实际上取决于如何在类中声明属性,但通常会保留这些类型的属性。

于 2012-04-11T17:38:36.150 回答