2014-09-10 100 views
13

我創建的選擇器上方的工具欄上有兩個按鈕和製作ios7,當我在iOS8上的崩潰運行:終止應用程序由於未捕獲的異常「UIViewControllerHierarchyInconsistency」,

終止應用程序兩到未捕獲的異常 「UIViewControllerHierarchyInconsistency 」,原因:‘子視圖 控制器:宜 有無父視圖控制器:但要求父母是:’

這是在ios7一直默默的一段代碼:

expiredPromoTextField.inputView = DatePicker; 
expiredPromoTextField.delegate = self; 
quantityPromoTextField.inputView = quantityPicker; 
quantityPromoTextField.delegate = self; 


// Create button to close the UIPickerView 
UIToolbar * mypickerToolbar = [[UIToolbar alloc] initWithFrame: CGRectMake (0, 0, 320, 56)]; 
mypickerToolbar.barStyle = UIBarStyleBlackTranslucent; 
[mypickerToolbar sizeToFit]; 
NSMutableArray * barItems = [[NSMutableArray alloc] init]; 
UIBarButtonItem * CancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemCancel target: self action:selector (cancelDoneClicked)]; 
[barItems addObject: CancelBtn]; 
UIBarButtonItem * FLEXspace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemFlexibleSpace target: self action: nil]; 
[barItems addObject: FLEXspace]; 
UIBarButtonItem * doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemDone target: self action:selector (pickerDoneClicked :)]; 
[barItems addObject: doneBtn]; 
[mypickerToolbar setItems: barItems animated: YES]; 
[quantityPicker setShowsSelectionIndicator: YES]; 

expiredPromoTextField.inputAccessoryView = mypickerToolbar; 
quantityPromoTextField.inputAccessoryView = mypickerToolbar; 

你知道我意識到的是,inputAccessoryView是要崩潰的應用程序,我也問蘋果的工程師,他們告訴我,這是與測試版的問題,但現在隨着通用汽車繼續給予同樣的問題。

我該怎麼辦?

+0

顯示異常日誌.. – rptwsthi 2014-09-10 09:34:27

+0

發佈錯誤日誌。 – 2014-09-10 09:41:48

+0

我用inputAccessoryView也遇到了這個問題。在我們的例子中,我們試圖將inputaccessoryView設置爲在XIB中定義的「父」視圖,該視圖指定了UITExtView和一個按鈕。當用戶點擊UITExtView時,鍵盤應該向上滑動,並且UITExtView和按鈕向上滑動(作爲附件視圖的一部分)。在IOS7中工作良好。沒有修復的想法尚未... – harshaw 2014-09-13 23:32:47

回答

12

我在iOS 8上遇到了相同的異常,現在修正爲以下代碼。

問題是,你不應該添加一個輸入視圖作爲視圖控制器視圖的子視圖。 (我不知道爲什麼代碼中的iOS 7行之有效的的iOS 8中不再運作良好)

之前(發生錯誤)

UITextField* someTF; 
View* customView; 
UIViewController *mainVC; 

[mainVC.view addSubview:customView]; 
someTF.inputView = customView; 

(運作良好)後

UITextField* someTF; 
View* customView; 
UIViewController *mainVC; 

// [mainVC.view addSubview:customView]; <-- delete this line 
someTF.inputView = customView; 
5

對於iOS 8 如果您添加UIPickerView上self.view:

[self.view addSubview:piker]; 

請從您這行代碼,然後設置:

textField.inputView = piker; 

感謝

+0

我正面臨像下面的問題(這是因爲你的答案中提到的UIPicker),你的答案解決了我的問題。謝謝。 --------------------------------- 'UIViewControllerHierarchyInconsistency',原因:'子視圖控制器:應該有父視圖控制器:但要求的父項是:' 終止與未捕獲異常的類型NSException abort()調用 – zapoo 2014-12-22 20:29:55

+0

請以可讀格式添加註釋@zapoo – Saranjith 2017-07-18 11:21:05

0

我有同樣的問題,當我在我的UITextField試圖設置我的UIDatePicker

- (void)setupViews { 
    ... 
    dobField.inputView = aDatePicker; // Here was the problem 
    ... 
} 

我的解決方案,我只是「分配」和「初始化」我的datePicker在ViewDidLoad

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
    ... 
    aDatePicker = [[UIDatePicker alloc] init]; // My solution 
    // If you need UIDatePickerModeDate 
    aDatePicker.datePickerMode = UIDatePickerModeDate; 
    ... 
} 
3

UIDatePickerView不應該有任何超視

問題的孩子:

你必須確保該視圖將分配給inputView或inputAccessoryView不屬於任何父視圖。也許當你在ViewController裏創建xib的這些視圖時,默認情況下它們是superview的子視圖。

解決方案提示

使用方法removeFromSuperview的視圖,您將分配給inputView或inputAccessoryView

看到這個鏈接

Error when adding input view to textfield iOS 8

0

我就遇到了這個問題,也詳細。我的代碼沒有任何addSubView,但我的xib有一個UIView與另一個UIView裏面。 UIView的內部有一個出口,以一個UIView財產像這樣:

@property(nonatomic, strong) IBOutlet UIView *inputView; 

什麼解決它是打開的廈門國際銀行,右鍵單擊「文件的所有者」(黃色立方體圖標)這將打開的意見和網點名單通過取消選中右側的圓來刪除鏈接。

相關問題