【问题标题】:Cant access an int value无法访问 int 值
【发布时间】:2011-06-30 15:55:38
【问题描述】:

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

int imageIndexForSend; 
@property int imageIndexForSend;
@synthesize imageIndexForSend;

单击按钮后,我将显示一个弹出框,它是 PopOver 类。 popover 类中有多个索引的表视图。当我单击 PopOver 类表中的任何行时,它将 myView 类 imageIndexForSend 设置为

在弹出窗口中

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

在我的视图类中

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

然后我在关闭 popover(popOver 类)并在 myViewClass 中执行一些操作后返回 myViewClass。

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

谁能告诉我一种获取旧 imageIndexForSend 值的方法。我可以知道我犯了什么错误。

【问题讨论】:

    标签: iphone objective-c xcode int


    【解决方案1】:

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

    其次,你使用一个属性并合成它,所以你不需要重写set方法,除非你需要一个自定义的set方法。

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        在您的弹出窗口中,您应该找到一种方法来访问保存实际索引值的实例。具体如何实现在很大程度上取决于您的实施。

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

        【讨论】:

          【解决方案4】:

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

          int index = [myTableView indexPathForSelectedRow].row;
          

          【讨论】:

            猜你喜欢
            • 2021-04-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多