我创建了一个小表视图(没有滚动),并希望用户选择一个选项。要知道选择了哪个选项,我在视图控制器的头文件中定义了int
类型,并将其作为属性公开。我定义了方法:
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//some code here/
int optionSelected = indexPath.row;
}
现在我想在其他视图控制器中使用此int optionSelected
,但它不起作用。除此之外,我在上面定义的函数中给出了“未使用的变量'optionSelected'”的错误。请告诉我哪里可能出错。谢谢。
答案 0 :(得分:3)
您在上面的代码中将optionSelected
重新声明为局部变量。这意味着您没有将它分配给您的实例变量,因此稍后尝试使用它将无效。从行首开始删除int
。这将删除警告,如果其他一切正常,则允许您访问类中其他位置的选定行索引。
答案 1 :(得分:0)
在您的代码中,int optionSelected
定义了一个具有局部范围的新整数 - 这意味着它只在该方法内有效。
如果您将名为int
的{{1}}作为媒体资源公开,请将其设为optionSelected
或self.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];