所以我以为我会去构建自己的简单应用程序。请放轻松我对这一切都是新手!这个想法是这样的。对于iPad,有一个带有文本框和文本字段的视图控制器。文本框采用标题,文本字段采用报告正文。页面上有一个按钮用于提交报告,该报告将两个文本捆绑到一个对象中,并将其添加到同一视图控制器中的表视图中。我在我的头文件中将视图控制器设置为<UITableViewDelegate, UITableViewDataSource>
的委托。我的表视图适用于在viewDidLoad
方法中添加项目。但是,通过连接到-(IBAction) addItem
的UIButton从文本输入中添加项目会导致:Property 'tableView' not found on object of type 'ReportsViewController'
- (IBAction)addReportItem
{
int newRowIndex = [reports count];
ReportObject *item = [[ReportObject alloc] init];
item.title = @"A new title";
item.reportText = @"A new text";
[reports addObject:item];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:newRowIndex inSection:0];
NSArray *indexPaths = [NSArray arrayWithObject:indexPath];
[self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];
}
我知道我正在尝试在我的对象中调用一个方法,但我对tableView的其他方法调用工作正常。即。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [reports count];
}
我认为这是代表团的观点。我知道我错过了一些东西,但正如我所说的那样,我对这一切都是新手并且在发布之前到处寻找答案。如何将IBAction
邮件发送至tableView
?
答案 0 :(得分:1)
您是否在视图控制器的.h文件中设置了tableView实例变量?
您能够在委托和数据源方法中访问它的原因是因为它们是作为方法的一部分传入的。
您需要添加IBOUTLET tableView ivar并将其连接到.xib中的tableView。
或许你的tableView的ivar被命名为别的什么?
祝你好运。答案 1 :(得分:1)
我遇到了同样的问题。
有助于从UITableViewController
而不是UIViewController
继承View Controller。不使用斜角括号中的协议名称。
然后通过故事板(相应的InterfaceBuilder)将TableView链接到dataSource和委托。
父类UITableViewController
定义了IBOutlet tableView
。
MyViewController.h:
@interface MyViewController : UITableViewController