0

所以我有一个标准方法,每个人都可以在准备转场时使用。当我认为逻辑上“准备”意味着在调用 segue 之前执行此操作。但是我已经设置了 3 个表格单元格,它们都有 1 个对SecondViewController. 当我测试它完全没有错误时。

现在,当我想添加到这个应用程序时,当用户选择第一个单元格时,标签“labeltje”会得到另一个文本值,这不会发生。当然,这段代码在我的TableViewController.m文件中,而不是在DagenViewController我的第二个控制器中。

我没看到什么? Dagenviewcontroller是进口的等。没有问题。这是代码的prepareforsegue位:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    DagenViewController *secondVC = (DagenViewController *)segue.destinationViewController;
    if([segue.identifier isEqualToString:@"vrijdagSegue"])
    {
        NSString *vrijdag = @"vrijdag";
        secondVC.labeltje.text = vrijdag;
    }
    else if([segue.identifier isEqualToString:@"zaterdagSegue"])
    {
        NSString *zaterdag = @"zaterdag";
        secondVC.labeltje.text = zaterdag;
    }
    else {
        NSString *zondag = @"zondag";
        secondVC.labeltje.text = zondag;
    }
}

或者有没有办法在ViewDidLoad我的方法中加入一些东西SecondViewController来检查使用了哪个segue?

感谢您的阅读。

4

2 回答 2

1

prepareForSegue:sender:被调用时,您正在访问一个 nil 的标签,因为尚未加载视图控制器的视图。创建一个字符串属性(您将在 中设置prepareForSegue:sender:),然后在您的DagenViewController viewDidLoad方法中从该字符串属性设置标签的文本。

于 2013-06-10T13:53:38.060 回答
1

尝试这样做:

DagenViewController.h 文件

@property (strong, strong) NSString *preText

DagenViewController.m 文件

- (void) viewDidLoad
{
    self.labeltje.text = preText;
}

在你的方法中

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    DagenViewController *secondVC = (DagenViewController *)segue.destinationViewController;
    if([segue.identifier isEqualToString:@"vrijdagSegue"])
    {
        secondVC.preText = @"vrijdag";
    }
    else if([segue.identifier isEqualToString:@"zaterdagSegue"])
    {
         secondVC.preText = @"zaterdag";
    }
    else {
         secondVC.preText = @"zondag";
    }
}
于 2013-06-10T14:31:33.860 回答