0
我有一個使用自定義UIViewcontroller(我們將其稱爲VC-A)的故事板,其中包含兩個容器視圖控制器的根視圖。我希望VC-A在初始化期間收集一些數據,並在初始化期間將它傳遞給其中一個子vc。我猜測我不完全理解這個工作的正確流程,因爲這似乎不可能。我可以設置值並運行其他操作,覆蓋initWithCoder方法並將VC-A設置爲其他子VC的委託(我可以將VC-A設置爲子VC的委託,並且子VC可以查詢VC-A的數據但是這隻能在子vc初始化後發生)。有沒有辦法做到這一點?或者更可能在哪裏錯過了正確的信息流?謝謝閱讀!使用故事板中容器視圖控制器的數據初始化視圖控制器
在VC-A
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"collectionEmbed"]) {
}
if ([segue.identifier isEqualToString:@"tableEmbed"]) {
ImageTableViewController *utvC = (ImageTableViewController *)segue.destinationViewController;
[utvC setUnitArray:[self vendUnitList]];
//A check on the debugger here shows that [[self vendUnitList] count] returns 5
}
}
在VC-B(TableViewController的子類
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
NSLog(@"%u",self.unitArray.count);
//Debugger shows this to be 0
return self.unitArray.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
// Configure the cell...
UnitVO *unitVO = (UnitVO *)[unitArray objectAtIndex:indexPath.row];
NSLog(@"Unit Name: %@",unitVO.unit_name);
cell.textLabel.text = unitVO.unit_name;
return cell;
}
一些洛
- (void)viewDidLoad
{
[super viewDidLoad];
if(self.tableView.delegate == self && self.tableView.dataSource == self)
{
NSLog(@"Yep");
}else{
NSLog(@"Nope");
}
// Get Yep for output
}
故事板在這裏可以看到:1
感謝您的迴應,我認爲您瞭解bc這個問題,這正是我想要做的!雖然我可能錯過了細節。具體來說,我正在使用VC-A向VC-B提供數據(B是一個vc-a獲取數據的tableviewcontroller)。據我瞭解,當框架進入prepareForSegue階段時,子控制器已經實例化了,所以當我設置了SomeValue時,控制器已經佈置了視圖並且已經初始化了。我試圖在VC-B初始化階段設置這個數據 –
@CollinWhite你測試過使用prepareForSegue設置數據嗎?我已經創建了幾個原型應用程序,它將爲該方法中的UITableView設置數據,並且該表在載入時始終使用數據填充。 – sbarow
我用更多的代碼更新了我的帖子,也許這會揭示我要去哪裏錯了,謝謝你的幫助! –