我正在Xcode中製作應用程序,並遇到一些問題。我使用GameKit框架來允許兩個iOS設備之間的藍牙通信。應用程序的設置使得其中一個設備是「主」設備,另一個是「從設備」,根據從「主」設備接收的數據更改其屏幕內容。用戶可以選擇是主設備還是從設備,當做出選擇時,另一臺設備自動成爲相反的角色。這全部在一個視圖控制器類中完成。選擇角色時,子視圖將添加到baseViewController。引用superview的方法
我的問題是,當添加子視圖時,我希望能夠使用baseViewController類中的方法發送數據。使用當前設置,調用動作becomeMaster:sender
的設備崩潰。
什麼我試過到目前爲止,
BaseViewController:
-(IBAction)becomeMaster:(id)sender {
[self dataToSend:@"slave"]; //tells peer device to become slave, since this device is master
masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil];
[masterViewController setBaseViewController:self];
[self.view addSubview:masterViewController.view];
}
-(void)dataToSend:(NSString *)direction {
//—-convert an NSString object to NSData—-
NSData* data;
NSString *str = [NSString stringWithString:direction];
data = [str dataUsingEncoding: NSASCIIStringEncoding];
[self mySendDataToPeers:data];
}
-(void)dataToSend:(NSString *)direction {
//—-convert an NSString object to NSData—-
NSData* data;
NSString *str = [NSString stringWithString:direction];
data = [str dataUsingEncoding: NSASCIIStringEncoding];
[self mySendDataToPeers:data];
}
//----------------------------------------------------------------------------//
- (void)receiveData:(NSData *)data fromPeer:(NSString *)peer inSession:(GKSession *)session context:(void *)context {
//—-convert the NSData to NSString—-
NSString* str;
str = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
[self useReceivedData:str];
[str release];
}
-(void)useReceivedData:(NSString *)str {
if ([str isEqualToString:@"forward"]) {
[slaveViewController.view setBackgroundColor:[UIColor blackColor]];
}
}
MasterViewController:
-(void)setBaseViewController:(BaseViewController *)bvc {
baseViewController = bvc;
}
-(IBAction)goForward:(id)sender {
actionLabel.text = @"goingForward";
[baseViewController dataToSend:@"forward"];
}
該代碼的絕大部分是標準的蘋果文檔/例子的一部分,但我將它包括在內以理解邏輯流程。
我認爲問題源於becomeMaster:sender
和setBaseViewController:bvc
方法。誰能幫助解決?非常感謝!
還有一個SlaveViewController子視圖。此外,沒有編譯時錯誤(我相信我設置了實例變量並將它們正確地合成)。 – 2011-03-28 01:50:35