首先确定你alloc
,init
你tableViewArray
的HomeViewController
二、在这一行
HomeViewController *homeVC = [[HomeViewController alloc] init]
您正在创建一个HomeViewController
不正确的新引用,您需要传递正确的引用,可能会在您的 HomeViewController 中创建变量 OutsideViewController
即使您正确地执行了第一个和第二个建议,您仍然会看到一个空的 tableview,因为您没有重新加载 tableview,不知何故您需要触发[self.tableview reloadData];
方法。
这意味着;您需要学习Delegate或NSNotifications模式以在 child->parent 场景之间进行通信
如何设置一个简单的委托来在两个视图控制器之间进行通信?
http://mobile.tutsplus.com/tutorials/iphone/ios-sdk_nsnotificationcenter/
对于您的问题,只需在您的Outside
; 在你的 OutsideViewController.h
#import <UIKit/UIKit.h>
@protocol OutsideDelegate;
@interface{}//bunch of interface stuff
// Declare a property for the delegate
@property (weak) id <OutsideDelegate> delegate;
@end
// Protocol Header
@protocol OutsideDelegate <NSObject>
@optional
- (void)dismissPop:(NSMutableArray *)list;
@end
在你的 OutsideViewController.m
@synthesize delegate;
//run delegate method
[delegate dismissPop:temporaryArray];
[self dismissViewControllerAnimated:YES completion:^{ }];
在你的 HomeViewController.h
#import "OutsideViewController.h"
@interface OutsideViewController : UITableViewController<OutsideDelegate>
{}
@property (strong, nonatomic) OutsideViewController *pvc;
在你的 HomeViewController.m
@synthesize pvc;
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"your segue"]) {
pvc = [segue destinationViewController];
[pvc setDelegate:self];
}
}
// delegate callback function
- (void)dismissPop:(NSMutableArray *)list {
self.tableViewArray=list;
[self.tableView reloadData];
}
另一个解决方案是
将您的视图堆栈更改为:
Navigation Controller --> HomeViewController -(push segue)--> OutsideViewController
并应用rdurand的答案
并将其添加到您的 HomeViewController :
-(void)viewDidAppear:(BOOL)animated
{
[self.tableview reloadData];
}
在这个解决方案中,因为你只是一个 nabigation 堆栈中的推送视图控制器viewDidAppear
,所以每次你弹出 OutsideViewController 时都会在 HomeViewController 中调用。