2

我正在制作一个聊天应用程序,当该人成功登录聊天时,服务器会回复当时在线的人。该字符串(服务器发送一个字符串)被转换为 NSMutableArray,然后存储到一个名为 的 NSMutableArraytableData中,它是 NSTableView 的数据源。当在线人数存储到tableData中时,NSLog 输出显示tableData已填充。但是,当该方法完成并关闭登录视图时,调试器中会显示 NSTableView 不会填充,而这通常会填充tableData0 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];
    }
}

任何帮助将不胜感激,因为我有这个项目的最后期限。

4

2 回答 2

0

代替

self.tableData = [NSMutableArray arrayWithArray:newTableData];

你能试一下吗

self.tableData = [newTableData copy];

我唯一能想到的是 - tableData 是一个强大的属性吗?

于 2013-10-17T01:03:36.857 回答
0

在这之后

self.tableData = [NSMutableArray arrayWithArray:newTableData];

写这个片段:

[self setTableData:tableData]
于 2013-10-17T06:22:52.660 回答