我正在製作一個聊天應用程序,並且當該人成功登錄到聊天時,服務器會回覆當時在線的人。該字符串(服務器發送一個字符串)被轉換爲NSMutableArray,然後將其存儲到名爲tableData
的NSMutableArray中,該數據是NSTableView的數據源。當在線人存儲到tableData
時,NSLog輸出顯示tableData
已填滿。但是,當該方法完成並且登錄視圖關閉時,在調試器tableData
中說0 Objects
,並且NSTableView不會填充,通常情況下它會這樣。這裏是我的方法(一個調用另一個):Objective C只能在方法範圍內更改對象
- (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];
}
}
任何幫助將不勝感激,因爲我對此有一個最後期限項目。
那麼有多少類的不同實例你創建? –
@HotLicks屬於哪一類 – jamespick
這些都屬於哪一類是nsviewcontroller。 – jamespick