使用表视图的困难

时间:2012-07-15 06:32:17

标签: objective-c xcode cocoa-touch uitableview

我创建了一个小表视图(没有滚动),并希望用户选择一个选项。要知道选择了哪个选项,我在视图控制器的头文件中定义了int类型,并将其作为属性公开。我定义了方法:

- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
       //some code here/
       int optionSelected = indexPath.row;
}

现在我想在其他视图控制器中使用此int optionSelected,但它不起作用。除此之外,我在上面定义的函数中给出了“未使用的变量'optionSelected'”的错误。请告诉我哪里可能出错。谢谢。

3 个答案:

答案 0 :(得分:3)

您在上面的代码中将optionSelected重新声明为局部变量。这意味着您没有将它分配给您的实例变量,因此稍后尝试使用它将无效。从行首开始删除int。这将删除警告,如果其他一切正常,则允许您访问类中其他位置的选定行索引。

答案 1 :(得分:0)

在您的代码中,int optionSelected定义了一个具有局部范围的新整数 - 这意味着它只在该方法内有效。

如果您将名为int的{​​{1}}作为媒体资源公开,请将其设为optionSelectedself.optionSelected = indexPath.row

答案 2 :(得分:0)

首先,请注意,optionSelected将保存所选表格的行,而不是选中的值。 其次,您已将optionSelected创建为当前类的实例变量,因此任何其他类都无法直接访问它。 要将该值传递给下一个视图,请在下一个视图的标题中添加optionSelected作为实例变量,就像在当前视图中一样。然后在配置下一个视图时将值传递给下一个视图,然后按下它:

// 1) create next view 2) configure next view 3) push next view
UIViewController *nextViewController= [[UIViewController alloc] initWithNibName:@"nextViewController" bundle:nil];

nextViewController.optionSelected = optionSelected;

[self.navigationController pushViewController:_tabBarController animated:YES];