带有数组信息的 UIViewController 上的 TableView [关闭]

Posted

技术标签:

【中文标题】带有数组信息的 UIViewController 上的 TableView [关闭]【英文标题】:TableView on UIViewController with array information [closed] 【发布时间】:2013-05-19 18:15:03 【问题描述】:

您好,我正在尝试在我的 uiviewcontroler 上使用 tableview 在我的 .h 中,我输入了以下代码:

@interface SecondViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> 
IBOutlet UITableView *myTableView;

@property (nonatomic, retain) IBOutlet UITableView *myTableView;

在我的 .m 上:

我修改了我的代码,但现在它说我的 Response_array 未声明,并且在对象类型 uitableviewcell 上找不到 myTablevView

@synthesize myTableView;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

return [_responseArray count];

 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

return 1;

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] init];

NSString *cellValue = [_responseArray objectAtIndex:indexPath.row];
[cell.textLabel setText:cellValue];
 return cell;

这是我的 Response_array

NSArray* Response_array = [json objectForKey:@"avenidas"];

【问题讨论】:

错误出现在哪一行? 在 -(UITableViewCell *)myTableView 行 -(UITableViewCell *)myTableView:(UITableView *)myTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 将不会被调用,并且会导致错误,因为委托方法声明不正确。它应该是 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 另外,请检查以确保在方法主体之前和之后都有一个开始和结束括号 。 谢谢,但现在我有其他错误 @darkjuso,没问题!我很高兴这有帮助。我在下面提供了答案。 【参考方案1】:

问题:Response_array 未声明

在您的 @interface 文件中创建一个声明您的 NSArray 的属性

@property (retain, nonatomic) NSArray * responseArray;

在您的@implementation 文件@synthesize 属性中

@synthesize responseArray = _responseArray;

(可选)

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

您可以使用 tableView 参数来访问 tableView 而不是 myTableView 属性。

例子:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];


问题:在对象类型 uitableviewcell 上找不到 myTablevView

cell.myTableView = cellValue;

您正在尝试访问单元格中的 tableView? UITableViewCell 有一个名为 textLabel 的默认标签。

所以应该如下(除非你有自定义标签):

[cell.textLabel setText:cellValue];

【讨论】:

【参考方案2】:

看起来你有一个 nested 方法。

换句话说,你有一个方法本质上是:

- (IBAction)Avenida:(id)sender 

    -(UITableViewCell *)myTableView:(UITableView *)myTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    

    


难怪您的代码无法编译。

您需要从您的“Avenida”操作方法中提取您的“cellForRowAtIndexPath”方法out。这应该是两个不同的方法。

【讨论】:

我把 cellForRowAtIndexPath 拿出来仍然得到“Invalid argument type UITableViewCell to unary expression”错误 我设法把它发布了,现在我修改了我原来的帖子,出现了一个新错误 所以现在你有一个新问题?这将是发布一个单独的新问题的绝佳机会。 :-) 无论如何,我很高兴能够帮助您解决第一个问题。您的“Response_Array”声明在哪个函数中?您应该将其设为实例变量(即将其放入您的“@interface”.h 文件中)。

以上是关于带有数组信息的 UIViewController 上的 TableView [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从 UIViewController 传递 NSArray

将带有 ScrollView 和 AutoLayout 的 UIViewController 添加到另一个 UIViewController

iOS:如何从 UIViewController 通知 appDelegate

UIViewController 没有带有 UIModalPresentationFormSheet 的 parentViewController?

如何将数据从基于 plist 的 UITableView 传递到 UIViewController

在现有的 UINavigationController 中插入 UIViewController