如果你在你的視圖控制器一個NSManagedObjectContext *managedContext;
財產按下「+」按鈕時,那麼你就可以發送一個管理對象引用新的視圖控制器。
- (IBAction)addCardButtonPressed:(UIButton *)sender {
// Get our managed object reference.
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *cardEntity = [NSEntityDescription entityForName:@"Card" inManagedObjectContext:self.managedContext];
[request setEntity:cardEntity];
NSError *error = nil;
NSArray *cards = [self.managedContext executeFetchRequest:request error:&error];
// Prepare to manually transition when the back button is pressed.
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil];
// The @"AddCard" identifier is the Storyboard identifier found in Xcode's storyboard properties
AddCardVC * addC = (AddCardVC *)[storyboard instantiateViewControllerWithIdentifier:@"AddCard"];
addC.cards = cards;
[self presentViewController:addCardVC animated:NO completion:nil];
}
一些事情要注意。
- 我假設您在覈心數據中有一個實體,名爲
Card
。
- 我假設你沒有使用
UINavigationController
。如果你想保持一個麪包屑(它通常建議),爲用戶回去,你會想用UINavigationController
- 我假設你已經設置視圖控制器的故事板ID爲「AddCard」在Xcode的身份檢查員。
- 我假設你已經在你的UIButton「添加卡」和你的視圖控制器之間設置了一個IBAction。
- 對
[self.managedContext executeFetchRequest];
的調用返回一個數組。我假定您的AddCardVC視圖控制器在其標題中包含一個名爲cards
的NSArray中的公共屬性。
您的AddCardVC.h應該有卡片數組或單個卡片對象屬性,因此您可以像上面那樣設置它。
@interface AddCardVC : UIViewController
@property (strong, nonatomic) NSArray *cards;
@end
我有點困惑,因爲你的主題標題說發送通過tableview,但你問如何做,當用戶按下+按鈕。如果您需要在用戶按下單元格時發送與您的tableview關聯的託管對象,則可以通過實現委託方法來執行此操作。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil];
AddCardVC *addCardVC = (AddCardVC *)[storyboard instantiateViewControllerWithIdentifier:@"AddCard"];
addCardVC.cards = [self.managedObjectsArray objectAtIndex:indexPath.row];
[self presentViewController:addCardVC animated:NO completion:nil];
}
此外,這不會提供任何麪包屑供用戶返回。如果你想讓用戶返回到前一個屏幕,你將不得不添加一個後退按鈕並自己編寫代碼,就像我們上面做的那樣。
如果你想使用UINavigationController的例子讓我知道,我可以把它放在一起。
一個輝煌和非常有幫助的答案!非常感激!爲了混淆道歉,我的意思是我試圖發送數據到視圖中的tableview,點擊viewAllCards屏幕上的添加按鈕激活,因爲我對XIB視圖相對不熟悉,這有點混亂。 – user3016288
很高興它幫助!如果這解決了您的問題,請將其標記爲已回答:) –