我从Json URL检索数据并将其显示在表格视图中。我还在表格视图中包含了一个按钮。单击该按钮时,必须将数据传输到另一个表视图。问题是我可以将数据发送到视图并可以在标签上显示。但我无法将数据绑定到表格视图......以下是一些代码片段......
购买按钮......
-(IBAction)Buybutton{
Product *selectedProduct = [[data products]objectAtIndex:0];
CartViewController *cartviewcontroller = [[[CartViewController alloc] initWithNibName:@"CartViewController" bundle:nil]autorelease];
cartviewcontroller.product= selectedProduct;
[self.view addSubview:cartviewcontroller.view];
}
... CartView
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
[super viewDidLoad];
data = [GlobalData SharedData];
NSMutableArray *prod =[[NSMutableArray alloc]init];
prod = [data products];
for(NSDictionary *product in prod){
Cart *myprod = [[Cart alloc]init];
myprod.Description = [product Description];
myprod.ProductImage =[product ProductImage];
myprod.ProductName = [product ProductName];
myprod.SalePrice = [product SalePrice];
[data.carts addObject:myprod];
[myprod release];
}
Cart *cart = [[data carts]objectAtIndex:0];
NSString *productname=[cart ProductName];
self.label.text =productname;
NSLog(@"carts");
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [data.carts count];
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return 75;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"cellforrow");
static NSString *CellIdentifier = @"Cell";
ProductCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell ==nil)
{
cell = [[[ProductCell alloc]initWithFrame:CGRectZero reuseIdentifier:CellIdentifier]autorelease];
}
NSUInteger row = [indexPath row];
Cart *cart = [[data carts]objectAtIndex:row];
cell.productNameLabel.text = [cart ProductName];
return cell;
}
我在控制台中也收到以下错误
2010-06-11 18:34:29.169 navigation[4109:207] *** -[CartViewController tableView:numberOfRowsInSection:]: message sent to deallocated instance 0xcb4d4f90
答案 0 :(得分:0)
您的视图控制器已自动释放,这就是您在控制台中出现错误的原因。
CartViewController *cartviewcontroller =
[[[CartViewController alloc]
initWithNibName:@"CartViewController"
bundle:nil] ***autorelease***];
您应该将视图控制器存储在成员变量中。
答案 1 :(得分:0)
这是折旧的:
cell = [[[ProductCell alloc]initWithFrame:CGRectZero reuseIdentifier:CellIdentifier]autorelease];
请改用initWithStyle:reuseIdentifier:
。
自动释放不是一种便利功能。它有特定的用途。当您立即将对象移交给另一个外部对象时,您应该只使用它。不要使用autorelease,除非发送对象更长时间关心接收对象是否存在或死亡。
一个好的经验法则是,如果您在发送对象中再次引用接收对象,请不要自动释放接收对象。