我希望那里的人可以帮助我了解我要去哪里错了
我有一个 TableViewController,为了保存 tableview 的内容,我更改了 -(void)viewDidLoad 代码以添加一个保存按钮...
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemSave
target:self
action:@selector(insertCustomData)
];
但是,在我的insertCustomData
函数中,我需要像在控制器代码中的其他地方一样访问 tableview。我需要访问我的表格视图,以便在保存到数据库之前验证单元格值。我可以看到如何从工具栏定义中传递对 tableview 的引用(如果应该这样做的话)
我什至不确定我是否应该在这个阶段访问 tableview 单元格的值(我正在尝试构建单元格数据的 NSObject 以传递给我编写的数据控制器中的验证函数,以验证并保存到 SQLite 数据库中)
抱歉,如果这看起来微不足道,但现在我坚持这一点,任何帮助将不胜感激
谢谢
[更新]
我将 tableView 用于数据输入屏幕,因此最初没有要显示的数据。tableView 在 tableview 控制器的范围内,但由于我需要这样做,我在运行时使用自定义单元格定义创建单元格(在 .xib 文件中,具有关联的 .h 和 .m 文件) . 自定义单元格定义只是一个 UILabel 和一个 UITextField(用于数据输入)
这些字段具有占位符以指示需要输入的内容,否则为空。我确实考虑过是否仍需要将 tableView 基于数组或字典对象来捕获用户输入
我写这个的类有定义@interface ViewController : UIViewController<UITableViewDelegate, UITableViewDataSource>
,因为它是从 UITableViewController 初始模板(或任何它调用的)创建的
我觉得我应该更早地捕获数据并且只从选择器中调用 save 方法?
我是否只需要使用 nil NSStrings 创建一个 NSArray 并将其分配给 tableView 中的每个 UITextField/Cell ?如果我这样做,文本条目会进入这个 NSArray 吗?
[已解决 - 答案如下]
我需要的是将标准 .h 文件修改为此
@interface CustomViewController : UITableViewController <UITextFieldDelegate> {
IBOutlet UITableView *MyTableView;
}
@property(nonatomic, retain) IBOutlet UITableView *MyTableView;
然后在界面生成器中,我能够将 tableview 链接到我的新声明。这是最重要的一步,因为这样可以确保我能够修改动态构建单元格的主要代码而不是通用 tableView 以引用它,如下所示
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"EditableCustomCell";
EditableCustomCell *cell = [[self MyTableView] dequeueReusableCellWithIdentifier:CellIdentifier];
我还在synthesize MyTableView
顶部添加了一个
这使得MyTableView
我需要编写的任何新方法都可以访问它,从而使从 leftBarButtonItem 选择器访问它变得insertCustomData
轻而易举
非常感谢Kimpoy在这方面的帮助!
(注意:具有讽刺意味的是,在完成此操作后,查看我发布的上一个问题,我应该从我之前关于 segues 和 tableviews 的问题中学到如何在 segue 期间从视图控制器引用 tableView)