3

我对此进行了上下搜索,发现了一些相似但不是我的确切问题。在我的详细视图控制器中,我有一个打开弹出表视图控制器的 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 传递的内容来确定表中填充的数据。

4

1 回答 1

-1

viewWillAppear 在 vi​​ewDidLoad 之后被调用。使用它来检查 prepareForSegue 方法之后的值。

于 2012-12-12T19:31:00.083 回答