0

这是我的 SlidingVC 标头中的属性声明,它是 UITableViewController 的子类:

@property (strong, nonatomic) NSString *user;

这是我的合成线:

@synthesize user = _user,sortedWordlist = _sortedWordlist, wordlist = _wordlist;

这是我的自定义初始化:

- (id)initWithUser:(NSString*)theUser
{
    self = [super init];
    if (self) {
        if ([theUser isEqualToString:@"user"]) {
            _user = @"user";
        }
        else if ([theUser isEqualToString:@"opponent"]){
            _user = @"opponent";
        }
    }
    return self;
}

所以发生的事情是,当我执行 pverinitWithUser:时,我看到它_user占用theUser了变量调试器窗口中的内存地址。我走过去return self,然后关闭}该方法,它仍然设置。但是,Xcode 又返回return self一次,然后如果我跳过_user它,它旁边就没有内存地址了,它仍然null用于后面的方法。

为什么它返回两次,然后第二次设置为空?


这是我的 MainVC 中实例化 SlidingVC 的方法:

- (WSWordlistTableViewController *)setupWordlistTableViewController:(NSString*)user
{
    WSWordlistTableViewController *wordlistTableViewController;
    UIView *wordlistContainerView;
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
                                                             bundle: nil];

    if ([user isEqualToString:@"user"]){
        if(!self.userWordlistTableViewController){
            self.userWordlistTableViewController  = [[WSWordlistTableViewController alloc] initWithUser:@"user"];
            wordlistTableViewController = self.userWordlistTableViewController;
            wordlistContainerView = self.userWordlistContainerView;
        }
    }
    else if ([user isEqualToString:@"opponent"]) {
        if(!self.opponentWordlistTableViewController){
            self.opponentWordlistTableViewController  = [[WSWordlistTableViewController alloc] initWithUser:@"opponent"];
            wordlistTableViewController = self.opponentWordlistTableViewController;
            wordlistContainerView = self.opponentWordlistContainerView;
        }
    }

    wordlistTableViewController = [mainStoryboard  instantiateViewControllerWithIdentifier:@"wordlistTableViewController"];

    wordlistTableViewController.view.frame = wordlistContainerView.bounds;
    wordlistTableViewController.view.autoresizingMask = wordlistContainerView.autoresizingMask;
    [self addChildViewController:wordlistTableViewController];
    [wordlistContainerView addSubview:wordlistTableViewController.view];
    [wordlistContainerView bringSubviewToFront:wordlistTableViewController.wordlistTableView];

    [wordlistTableViewController didMoveToParentViewController:self];

    return wordlistTableViewController;
}

调用该方法的方法取决于按下的按钮:

- (IBAction)slideUserWordlistView:(id)sender {
    if(!self.userWordlistTableViewController){
        [self setupWordlistTableViewController:@"user"];
    }

    // (sliding drawer code here)
}

或者:

- (IBAction)slideOpponentWordlistView:(id)sender {
    if(!self.opponentWordlistTableViewController){
        [self setupWordlistTableViewController:@"opponent"];
    }

        // (sliding drawer code here)
}

我正在做的是滑出一个包含我的 SlidingVC 的视图。我有两个,两个用户各一个。当每个相应的按钮被按下时,我检查每个相应的 SlidingVC 是否存在,如果不存在,则实例化然后添加到slidingViewContainer。

4

0 回答 0