[英]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.