我通过 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值的方法。可能我知道我做了什么错误。
答案 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;