无法访问int值

时间:2011-06-30 15:55:39

标签: iphone objective-c xcode int

我通过 myView 类中的以下代码将int值声明为我的imageIndexForSend。

int imageIndexForSend; 
@property int imageIndexForSend;
@synthesize imageIndexForSend;
单击按钮后,我显示一个PopOver calss的弹出窗口。 在popover类中有多个索引的表视图。当我点击PopOver类表中的任何一行时,它将myView类 imageIndexForSend 设置为

在PopOver中

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
    myView *obj = [[myView alloc] init];
    [obj getImageForSend:indexPath.row];
    [staticSceneController release];
}
myViewClass中的

-(void)getImageForSend:(int)index{
    imageIndexForSend = index;
}

然后我在解除popover(popOver类)并在myViewClass中执行某些操作后返回myViewClass。

然后我点击一个发送按钮。但整数值 imageIndexForSend 为零.cant获取我从PopUp设置的旧值。

任何人都可以告诉我一个获取旧imageIndexForSend值的方法。可能我知道我做了什么错误。

4 个答案:

答案 0 :(得分:1)

只要用户点击UITableView的任何一行,您就会实例化一个新的MyView。您应该尝试访问原始的MyView(或者任何对象应保留该设置值)。

在您的popover中,您应该找到一种方法来访问包含实际索引值的实例。究竟如何实现取决于您的实施。

换句话说,不要在对象中实例化一些生命周期比访问该实例的对象更短的内容。

答案 1 :(得分:1)

您似乎正在分配一个myView实例并将其分配给局部变量(obj),但是您不会在任何地方保留指向该新实例的指针。

根据我的理解,您已经拥有myView的现有实例,因此您需要做的是在该实例上设置变量,而不是每次都创建一个新变量。

每个实例都有自己的一组变量,因此在新实例中更改它不会影响任何其他实例。

答案 2 :(得分:1)

首先,你用get来设置一个方法来设置值,这很糟糕。

其次,使用属性并对其进行合成,因此除非需要自定义set方法,否则不需要重写set方法。

最后,您在tableview单元格的每个选项上创建一个新视图!

1)删除你的getImageForSend:方法,你不需要带属性

2)使用:[obj getImageForSend:indexPath.row] ;,使用:obj.imageIndexForSend = indexPath.row;

3)不要在每个选择上创建新视图,在现有视图上指定值。

将数据从popover传输到视图(控制器?)的更好方法是在popover类中使用delegate属性并使用view对象设置它,使用在单元格中调用的方法创建委托协议在popover中选择一个带有int参数(索引)然后让你的视图类采用协议并执行一个obj.imageIndexForSend = 参数;在您的协议方法中。

答案 3 :(得分:0)

如果您尝试访问UITableView中所选行的索引,则只需使用以下内容:

int index = [myTableView indexPathForSelectedRow].row;