这是我的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;
}
所发生的事情是,当我步进pver initWithUser:
时,我看到_user
在变量调试器窗口中占用了theUser
的内存地址。我跳过return self
然后到方法的结束}
,它仍然设置。但是,Xcode会再次返回return self
,然后如果我跳过_user
,它旁边就没有内存地址了,对于后面的方法,它仍然是null
为什么它会返回两次,然后第二次设置为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。