这是我的 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。