2012-08-12 59 views
0

我拖到ViewController.h區域的動作(這是我dayNight按鈕),如圖所示:不能重命名源代碼 - 得到錯誤「線程1:信號SIGABRT」

// 
// ViewController.h 
// 

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController 

- (IBAction)dayNight:(id)sender; 
- (IBAction)insulationClick:(id)sender; 

現在我決定我想要它讀取:

- (IBAction)dayNightClick:(id)sender; 

因此,我手動將其重命名,如上面的行中所示。

- (IBAction)dayNight:(id)sender{} 

到:我也是在ViewController.m文件從它重命名

- (IBAction)dayNightClick:(id)sender{} 

當我執行我的代碼,只要我用我的按鈕得到一個錯誤。

如果我手動重命名它(沒有單詞Click)它再次工作。

爲什麼我不能手動修改代碼行。還有另一個地方我必須重新命名代碼嗎?

的錯誤是:

Thread1: signal SIGABRT 

,並指出在main.m文件這行代碼:

int main(int argc, char *argv[]) 
{ 
@autoreleasepool 
{ 
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 
} 
} 

我敢肯定,這是一個非常基本的問題。

回答

1

我發現什麼是以下幾點:

  • 轉至故事板(即認爲在這裏你可以看到你的iDevice你的GUI表示)
  • 單擊要重命名的按鈕(我們將刪除它)
  • 單擊名爲「顯示連接檢查器」(位於xcode的右上角附近,看起來像一個黑色圓圈中的右箭頭)的按鈕。
  • 有一個名爲「已發送事件」的部分,並且您的按鈕事件將在其周圍繪製一個氣泡,並附帶第二個氣泡的IBAction名稱鏈接。
  • 單擊第二個氣泡中的小十字(x)以刪除事件鏈接。

現在您可以重新開始並將按鈕重命名爲任何您喜歡的東西。在我的例子我改名爲它:

(IBAction)dayNight:(id)sender{} 

到:

(IBAction)dayNightClick:(id)sender{} 

因此,這是通過刪除的按鈕,所有引用和再次簡單地創建它重命名。需要注意的另外兩個地方,從刪除它是:

  • 在* .h文件中,例如我刪除了這條線:

    (IBAction爲)dayNight:(ID)發送{}

,並在* .m文件,例如我刪除了這個代碼:

(IBAction)dayNight:(id)sender{} 
{ 
    // code in here 
} 
2

發生這種情況是因爲您的故事板/筆尖仍指向舊名稱。 nib文件基本上只是後臺的XML文件,所以你需要做的是打開你的筆尖/故事板轉到顯示所有引用的檢查器。你會發現你對IBAction的舊引用仍然存在。通過點擊小十字並再次將其拖入ViewController並將其與您重命名的函數連接來刪除它。

一定要記住,如果你在你的頭文件改變你的方法簽名:)

+0

我沒有看到一個故事板或筆尖文件。在支持Files文件夾中,我可以看到.plist .string和.pch文件,但是框架產品或我的主文件夾中沒有storyboard或nib? – Chillywinter 2012-08-12 11:20:56

+0

在你的問題中,你說你「拖動了一個動作」到視圖控制器中嗎?你從哪裏拖出來的? GUI設計器是故事板/筆尖(也有擴展名.xib)。 – dineth 2012-08-12 11:23:51

+0

我還應該提到,如果您右鍵單擊您的功能並在下次選擇重構 - >「重命名」,則不會遇到此問題。它會自動更新筆尖/故事板。 – dineth 2012-08-14 01:22:35

0

是更新兩個故事板+ .M。該按鈕有一個關聯的目標/選擇器,它在按下時調用。找一條包含如下內容的行:

[button addTarget:self action:@selector(dayNight:) forControlEvents:UIControlEventTouchUpInside]; 

並在此處更改選擇器。

相關問題