我对此进行了上下搜索,发现了一些相似但不是我的确切问题。在我的详细视图控制器中,我有一个打开弹出表视图控制器的 segue。在 PrepareForSegue 方法中,我设置了表格视图的属性,如下所示:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"StateSegue"])
{
popover = [(UIStoryboardPopoverSegue *)segue popoverController];
StatePickerController *statePicker = (StatePickerController *)popover.contentViewController;
statePicker.delegate = self;
statePicker.pickerType = @"states";
}
}
我同时传递了委托和pickerType 值。在我的表视图 StatePickerController 中,我在标题中声明了这些属性,如下所示:
@property (nonatomic,assign) id<StatePickerDelegate> delegate;
@property (nonatomic,strong) NSString *pickerType;
我知道这些值正在正确地传递到我的弹出框控制器中,因为稍后在 didSelectRowAtIndexPath 中我可以同时引用它们并且我得到了正确的委托和“状态”,但是在 viewDidLoad 方法中,两者仍然是(null)。
- (void)viewDidLoad
{
[super viewDidLoad];
self.clearsSelectionOnViewWillAppear = NO;
self.contentSizeForViewInPopover = CGSizeMake(150.0, 140.0);
self.states = [NSMutableArray array];
NSLog(@"%@",self.delegate); //returns (null)
NSLog(@"%@",self.pickerType); //returns (null)
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"%@",self.pickerType); //corectly logs "state"
NSString *state = [_states objectAtIndex:indexPath.row];
[self.delegate stateSelected:state]; //correctly runs method on detailviewcontroller
}
在设置这些属性的 viewDidLoad 方法之后是否有一些点?我需要在视图加载时立即访问这些值,因为我需要根据从 detailviewcontroller 传递的内容来确定表中填充的数据。