0

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

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

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

4

3 回答 3

3

您在optionSelected上面的代码中重新声明为局部变量。这意味着您没有将它分配给您的实例变量,因此以后使用它的任何尝试都将不起作用。int从行的开头删除。这将删除警告,如果其他一切正常,您可以访问班级其他地方的选定行索引。

于 2012-07-15T06:43:03.387 回答
0

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

int如果您已将调用optionSelected作为属性公开,请使用self.optionSelected = indexPath.rowor设置它[self setOptionSelected:indexPath.row]

于 2012-07-15T06:40:48.427 回答
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];
于 2012-07-15T06:51:02.837 回答