如何传递int的数据?

Posted

技术标签:

【中文标题】如何传递int的数据?【英文标题】:How to pass data of an int? 【发布时间】:2014-06-12 17:09:24 【问题描述】:

只是一个小问题。我有一个根视图控制器 (AufnahmeIstTableViewController) 和一个详细视图控制器 (AufnahmeISTDetailTableViewController)

我还有一个名为 istAufnahmeInt 的 int。当用户在我的根视图控制器上选择第 1 行时,我的 int 值设置为 0。当按下第 2 行时,值设置为 1,...。

在我的 prepareForSegue 方法中,我有以下代码:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
if([segue.identifier isEqualToString:@"DetailView"])

AufnahmeISTDetailTableViewController *controller =(AufnahmeISTDetailTableViewController *)segue.destinationViewController;
controller.istAufnahmeInt = //What should I enter here? ;


那么,我必须在哪里输入我的评论才能获得我的 istAufnahmeInt 的值?

我使用故事板。

为了完成:这是我的 didSelectRowAtIndexPath 方法:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

AufnahmeISTDetailTableViewController *categories =     [[AufnahmeISTDetailTableViewController alloc]init];

if ([[self.categoryArray objectAtIndex:indexPath.row] isEqual:@"Gesetze"])
categories.istAufnahmeInt = 0;

if ([[self.categoryArray objectAtIndex:indexPath.row] isEqual:@"Messmittel"])
categories.istAufnahmeInt = 1;

if ([[self.categoryArray objectAtIndex:indexPath.row] isEqual:@"Dritte"])
categories.istAufnahmeInt = 2;

[categories setTitle:[self.categoryArray objectAtIndex:indexPath.row]];



【问题讨论】:

您是想在 segue 之前在您的视图控制器上设置 istAufnahmeInt 的值,还是从视图控制器 检索值? Passing Data Between View Controllers DidSelectRowsAtIndexPath Storyboards 的可能重复项 不,这不是重复的:他想知道如何传递数据,我想知道如何传递整数 传递整数就是传递数据,只是一个更具体的例子。 【参考方案1】:

您的 didSelectRowAtIndexPath: 方法实际上并没有做任何事情 - 它分配并初始化一个 AufnahmeISTDetailTableViewController,但随后对该控制器不做任何事情,因此它在该方法结束时消失。

您要做的是根据当前选择的 tableView 行在prepareForSegue: 中的控制器上设置istAufnahmeInt 值-基本上,将didSelectRowAtPath: 中的逻辑放入prepareForSegue: .

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    if([segue.identifier isEqualToString:@"DetailView"])
    
        AufnahmeISTDetailTableViewController *controller = (AufnahmeISTDetailTableViewController *)segue.destinationViewController;
        if ([[self.categoryArray objectAtIndex:[self.tableView indexPathForSelectedRow].row] isEqual:@"Gesetze"])
            controller.istAufnahmeInt = 0;

        if ([[self.categoryArray objectAtIndex:[self.tableView indexPathForSelectedRow].row] isEqual:@"Messmittel"])
            controller.istAufnahmeInt = 1;

        if ([[self.categoryArray objectAtIndex:[self.tableView indexPathForSelectedRow].row] isEqual:@"Dritte"])
            controller.istAufnahmeInt = 2;

        [controller setTitle:[self.categoryArray objectAtIndex:[self.tableView indexPathForSelectedRow].row]];
    

【讨论】:

很抱歉,但我不知道在我的 prepareforsegue 方法中输入什么。请你帮助我好吗? :) 对不起,我是开发新手 我粘贴的代码应该完全按照您的prepareForSegue: 方法工作,只要您的tableview 被称为tableView。如果它被称为其他名称,则必须将 tableView 更改为变量名称,但除此之外,这应该是您需要的。 非常感谢!我一直在挣扎和寻找大约3天!!!!!!真的真的非常感谢!!!!【参考方案2】:

你很困惑。正如其他海报之一指出的那样,在您的 didSelectRowAtIndexPath 方法中,您正在创建一个新的 AufnahmeISTDetailTableViewController 对象,在其上设置属性,然后忘记它。不要那样做。

你要做的是将一个整数实例变量的值设置为当前行号,这样你就可以记住它。然后,在您的 prepareForSegue 方法中,获取指向目标视图控制器的指针,将其转换为正确的类型,并传递您保存的整数值。

顺便问一下,什么应该触发你的 segue?在表格视图中选择一行应该直接触发 segue,还是用户必须做其他事情?

【讨论】:

以上是关于如何传递int的数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在函数中传递数据?

ASP Action函数 如何接收前台ajax传递的数据(编辑中。。。)

解析以多种格式传递的数据......如何从中获取我需要的数据

Swift,parse.com:如何从查询中传递数据

在C#中怎样在两个Form之间传递数据(Winfrom)?

如何使用 WCF 将数据从一个进程传递到另一个进程?