2014-03-04 76 views
0

我有一個導航控制器和第一個VC模式到第二個罰款。我按了ctrl+button並拖拽它,一切正常。視圖控制器創建一個segue時給出錯誤

我做的,從第一個VC(再次),這一次它的另一個按鈕第二SEGUE,我ctrl+button並將其拖動到新的VC,我在Xcode中得到無用的錯誤 -

2014 -03-04 11:57:21.340 OutTonight [3173:60b] - [SettingsViewController setDealdetail:]:無法識別的選擇器發送到實例0x16e686d0 2014-03-04 11:57:21.342 OutTonight [3173:60b] *終止應用程序由於 未捕獲異常'NSInvalidArgumentException',原因: ' - [SettingsViewController setDealdetail:]:無法識別的選擇器發送 到實例0x16e686d0' *第一擲調用堆棧:

這裏是我的prepareforseguecode

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
     NSIndexPath *indexPath = [self.tableview indexPathForSelectedRow]; 
     DealViewController *detailView = (DealViewController *)segue.destinationViewController; 
     detailView.dealdetail = [self.allcontent objectAtIndex:indexPath.row]; 
     detailView.dealpostcode = [self.allpostode objectAtIndex:indexPath.row]; 
     detailView.dealvenuename = [self.allname objectAtIndex:indexPath.row]; 
     detailView.dealaddress = [self.alladdress objectAtIndex:indexPath.row]; 
     detailView.dealaddress2 = [self.alladdress2 objectAtIndex:indexPath.row]; 
     detailView.deallat = [self.alllat objectAtIndex:indexPath.row]; 
     detailView.deallng = [self.alllong objectAtIndex:indexPath.row]; 
     detailView.userlatitude = [[NSUserDefaults standardUserDefaults] objectForKey:@"UserLatitude"]; 
     detailView.userlongitude = [[NSUserDefaults standardUserDefaults] objectForKey:@"UserLongitude"]; 
} 

任何想法? enter image description here

+0

您是否添加了UIButton操作方法?作爲無法識別的選擇器意味着它沒有關聯的操作方法,例如,對於連接到UITouchupInside的UIButton操作方法。 – user2071152

+0

我還沒有做任何與UIButton,但我還沒有創建一個IBAction或任何東西 - 我雖然這可能是問題?我應該把一個 – user3328028

+0

在我的視圖controller.h文件中創建一個IBAction按鈕,仍然錯誤 – user3328028

回答

1

我假設你已經在-prepareForSegue:中做了一些原始的賽格?在這種情況下,您需要確保您正在檢查它在-prepareForSegue:中的哪個分類,併爲每個分類做正確的事情。

編輯:

爲了擴大對我的回答,我想你正在使用segue.destinationViewController,並呼籲它setDealdetail:。這可能適用於您的初始階段,因爲destinationViewController對該消息作出了響應,但是,新的segue的目的地不會。您需要檢查正在執行哪個階段。使用[segue.identifier isEqualToString:MySegueIdentifierString];

編輯2(張貼代碼後):

好吧,你需要檢查被你-prepareForSegue:執行其SEGUE。類似這樣的:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:SegueToDealViewControllerIdentifier]) { 
     NSIndexPath *indexPath = [self.tableview indexPathForSelectedRow]; 
     DealViewController *detailView = (DealViewController *)segue.destinationViewController; 
     detailView.dealdetail = [self.allcontent objectAtIndex:indexPath.row]; 
     detailView.dealpostcode = [self.allpostode objectAtIndex:indexPath.row]; 
     detailView.dealvenuename = [self.allname objectAtIndex:indexPath.row]; 
     detailView.dealaddress = [self.alladdress objectAtIndex:indexPath.row]; 
     detailView.dealaddress2 = [self.alladdress2 objectAtIndex:indexPath.row]; 
     detailView.deallat = [self.alllat objectAtIndex:indexPath.row]; 
     detailView.deallng = [self.alllong objectAtIndex:indexPath.row]; 
     detailView.userlatitude = [[NSUserDefaults standardUserDefaults] objectForKey:@"UserLatitude"]; 
     detailView.userlongitude = [[NSUserDefaults standardUserDefaults] objectForKey:@"UserLongitude"]; 
    } 
} 

其中SegueToDealViewControllerIdentifier是原始segue的segue標識符。

+0

我爲第一個創建了prepartForSeague,但尚未創建第二個。我認爲它會在沒有prepareforseague的情況下轉移到VC,因爲這只是爲了傳遞變量?對還是錯 ? – user3328028

+2

'prepareForSegue'被你所執行的任何segue調用 - 你檢查你正在執行哪個segue的實現:'[segue。標識符isEqualToString:MySegueIdentifierString];' – JoeFryer

+0

也許發佈你的'-prepareForSegue:'代碼,如果更容易? – JoeFryer

相關問題