![](/img/trans.png)
[英]Misuse of UITextField.inputView to get similar popup behavior of keyboard
[英]iOS UITextField.inputView error
我試圖將自定義inputView添加到tableViewCell輸入字段,但是當我這樣做時,我的應用程序中出現了混合視圖,並且應用程序崩潰。 我已經看過以前的解決方案,但沒有找到適合我的工作。 你能幫我嗎?
#pragma mark - TableView data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
return self.taskQuestionObjects.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Do dequeue the custom cell here
TaskManagerQuestionAndAnswerTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:taskQuestionAnswerCellIdentifier];
TaskManagerQuestion *questionObject = self.taskQuestionObjects[indexPath.row];
cell.taskQuestionLabel.text = questionObject.title;
cell.taskAnswerTextField.inputView = [[[NSBundle mainBundle] loadNibNamed:@"TaskManagerPickerKeyboardViewController" owner:self options:nil] objectAtIndex:0];
return cell;
}
控制台日志:
2014-09-12 12:26:19.615 TaskManager[24317:60b] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x167906e0 V:[UITableView:0x16bc6c00(417)]>",
"<NSLayoutConstraint:0x167932d0 V:[_UILayoutGuide:0x16792e00]-(0)-[UITableView:0x16bc6c00]>",
"<NSLayoutConstraint:0x16793360 V:[UITableView:0x16bc6c00]-(87)-[_UILayoutGuide:0x16792ff0]>",
"<_UILayoutSupportConstraint:0x167917d0 V:[_UILayoutGuide:0x16792e00(64)]>",
"<_UILayoutSupportConstraint:0x16791770 V:|-(0)-[_UILayoutGuide:0x16792e00] (Names: '|':UIView:0x16791280 )>",
"<_UILayoutSupportConstraint:0x16791890 V:[_UILayoutGuide:0x16792ff0(0)]>",
"<_UILayoutSupportConstraint:0x16791830 _UILayoutGuide:0x16792ff0.bottom == UIView:0x16791280.bottom>",
"<NSAutoresizingMaskLayoutConstraint:0x1677d2f0 h=--& v=--& V:[UIView:0x16791280(480)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x167906e0 V:[UITableView:0x16bc6c00(417)]>
Break on objc_exception_throw to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
2014-09-12 12:26:38.039 TaskManager[24317:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Can't add self as subview'
*** First throw call stack:
(0x30228f83 0x3aaa3ccf 0x30228ec5 0x32a51535 0x32a514bf 0x32c19f71 0x32a57ac5 0x32c19879 0x32bd6b27 0x32af3d63 0x32af3b6d 0x32af3b05 0x32a45d59 0x326c362b 0x326bee3b 0x326beccd 0x326be6df 0x326be4ef 0x32a493e1 0x301f420b 0x301f36db 0x301f1ecf 0x3015cebf 0x3015cca3 0x350b6663 0x32aa914d 0xe85c1 0x3afb0ab7)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
inputView屬性定義為(UIView *),而不是(UIViewController *)。 將其分配給inputView時,需要使用已加載的視圖控制器的view屬性,而不是視圖控制器本身。 我認為您還應該將加載的視圖控制器存儲為一個屬性,每次在重新加載單元格時從筆尖加載它都不利於應用程序性能。 盡管我上次在表視圖中嘗試loadNibNamed是在iOS 4.0中,但那時似乎沒有使用任何緩存。 如何嘗試這樣的事情:
// class extension for the lazy loaded property
@interface MyTableViewController()
@property (readonly) UIViewController *inputVC;
@end
@implementation MyTableViewController {
UIViewController *_inputVC;
}
- (UIViewController *)inputVC {
if (_inputVC == nil) {
_inputVC = [[[NSBundle mainBundle] loadNibNamed:@"TaskManagerPickerKeyboardViewController" owner:nil options:nil] objectAtIndex:0];
}
return inputVC;
}
...
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
...
cell.taskAnswerTextField.inputView = self.inputVC.view;
...
}
@end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.