我正在制作一个聊天应用程序,当该人成功登录聊天时,服务器会回复当时在线的人。该字符串(服务器发送一个字符串)被转换为 NSMutableArray,然后存储到一个名为 的 NSMutableArraytableData
中,它是 NSTableView 的数据源。当在线人数存储到tableData
中时,NSLog 输出显示tableData
已填充。但是,当该方法完成并关闭登录视图时,调试器中会显示 NSTableView 不会填充,而这通常会填充tableData
。0 Objects
这是我的方法(一个调用另一个):
- (void)getPeople:(NSString *)outputMessage
{
NSArray *newTableData = [outputMessage componentsSeparatedByString:@";"];
self.tableData = [NSMutableArray arrayWithArray:newTableData];
//[self.tableData removeObjectAtIndex:0];;
NSLog(@"Data: %@", self.tableData);
[self.people reloadData];
}
- (void)accessGrantedWithOnlineUsers:(NSString *)users
{
NSLog(@"Access Granted");
self.isLoggedIn = YES;
[self.loginButton setTitle:@"Logout"];
[self getPeople:users];
}
这是我打开和关闭登录视图的方法:
- (IBAction)loginToChat:(id)sender {
NSLog(@"Called");
if (self.loginPopover == nil) {
NSLog(@"Login Popover is nil");
self.loginPopover = [[NSPopover alloc] init];
self.loginPopover.contentViewController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
}
if (!self.loginPopover.isShown) {
NSLog(@"Login Popover is opening");
[self.loginButton setTitle:@"Cancel"];
[self.settingsButton setEnabled:NO];
[self.send setEnabled:NO];
[self.message setEnabled:NO];
[self.loginPopover showRelativeToRect:self.loginButton.frame ofView:self.view preferredEdge:NSMinYEdge];
}
else {
NSLog(@"Login Popover is closing");
if (self.isLoggedIn) {
[self.loginButton setTitle:@"Logout"];
}
else {
[self.loginButton setTitle:@"Login"];
}
[self.settingsButton setEnabled:YES];
[self.send setEnabled:YES];
[self.message setEnabled:YES];
[self.loginPopover close];
}
}
任何帮助将不胜感激,因为我有这个项目的最后期限。