簡體   English   中英

IOS如何將一個數組轉移到另一個視圖控制器

[英]IOS how to segue an array to another view controller

我有一個初始視圖控制器(A)和一個導航控制器鏈接到另一個視圖控制器(B)。 如何通過 segue 將數組從 A 傳遞到 Big?

這是我的轉場代碼。

  -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSLog(@"prepareForSegue: %@", segue.identifier);

    if ([segue.identifier isEqualToString:@"severityInfo"]) {
        UINavigationController *segueNavigation = [segue destinationViewController];
        NSLog(@"%@",[[segueNavigation viewControllers]objectAtIndex:0]);
        IncidentOverviewViewController *B = (IncidentOverviewViewController *)[[segueNavigation viewControllers]objectAtIndex:0];
        B.BArray = feeds;
    }
}

運行此代碼后出現此錯誤:原因:'-reason:'找不到 segue 'severityInfo' 的導航控制器。 Push segues 只能在源控制器由 UINavigationController 的實例管理時使用。

我已經在我的第二個視圖控制器(事件視圖控制器)中聲明了該方法,如下所示:

-(void)setFeeds:(NSMutableArray*)received
{
    BArray = received;

    NSLog(@"feeds are%@", BArray);

}

我已經從我的初始視圖控制器調用“視圖控制器”在故事板中插入標識符,這個初始視圖控制器連接到導航視圖控制器,然后從導航視圖控制器連接到我的目標視圖控制器調用“incidentOverviewViewController”

這是這樣做的

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSLog(@"prepareForSegue: %@", segue.identifier);

    if ([segue.identifier isEqualToString:@"severityInfo"]) {
        UINavigationController *segueNavigation = [segue destinationViewController];
        ViewController *B = (ViewController *)[segueNavigation topViewController];
        [B setBArray:feeds];

    }
}

是的,您需要在您正在調用的視圖控制器中定義該方法。 你還能怎么稱呼它? 您可以將方法定義為任何其他方法。

您還應該將它轉換為IncidentOverviewViewController ,如果這是類型,而不是轉換為ViewController

方法將是這樣的

-(void)setBArray:(whatevertype)array
{
    Dowhatever
}

取決於您的類型和存儲方法。

在 B 視圖控制器中創建一個數組作為屬性,並在 segue 方法中執行以下操作:-

if ([segue.identifier isEqualToString:@"severityInfo"])
    UINavigationController *segueNavigation = [segue destinationViewController];
    ViewController *B = (ViewController *)[segueNavigation topViewController];
    B.array = feeds;
}

嘗試這個

  -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
     if ([segue.identifier isEqualToString:@"severityInfo"]) {
        UINavigationController *segueNavigation = [segue destinationViewController];
       NSLog(@"%@",[[segueNavigation viewControllers]objectAtIndex:0]);
        IncidentViewControllerClassName *B = (IncidentViewControllerClassName *)[[segueNavigation viewControllers]objectAtIndex:0];
        B.BArray = feeds;
    }
}

在 IncidentViewControllerClassName.h 文件中

 @property(nonatomic,strong) NSArray *BArray;

要操作 Push segue,您需要將導航控制器嵌入到視圖控制器,從中您可以連接到另一個視圖控制器。 因此,將您的第一個 VC 嵌入到導航控制器中。 你的故事板應該是這樣的

NavController -->(RootVC)--->VC1 (segue:severityInfo)---NavigationControlelr--(root)VC2。

希望可以讓您了解錯誤持續存在的原因。 要清除它,嵌入 VC1 或作為導航控制器的根 VC 推送的視圖控制器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM