【问题标题】:TableView doesn´t show rowsTableView 不显示行
【发布时间】:2012-05-01 14:11:00
【问题描述】:

我有一个带有根目录和第二个视图的导航控制器。第二个视图包含一个选择器视图,用户可以在其中将值设置为 0 到 9。我将此值保存在 nsuserdefaults 并将其用于rootviev上tableview中的numberofrowsinsection。 我从 userdefaults 中检索 pickervalue 并将其设置为 NSInteger。 NSLog 向我显示了正确的值,但作为表的返回值-> 没有行。表格视图有效,(例如)4 的返回值显示我 4 行...

对我有什么想法吗?

这里是根视图:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
       return retValv ;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath          *)indexPath
{
UITableViewCell *cell;
cell = [UITableViewCell alloc];
cell = [cell initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
cell.textLabel.text = @"Test";
return cell;
}


-(IBAction)switch1:(id)sender {
 secondView *second=[[secondView alloc]initWithNibName:@"secondView" bundle:nil];


 [self.navigationController pushViewController:second animated:YES];

}

-(IBAction)showLog:(id)sender
{
NSLog(@"retValv is dzt. %i",retValv);

}

- (void)viewDidAppear:(BOOL)animated
{ 
[super viewDidAppear:animated];

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
retValv = [defaults integerForKey:@"myInt"];
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.title = @"Locations";
}

- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:       (UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

和第二个视图:

#import "secondView.h"


@interface secondView ()

@end

@implementation secondView


-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView
{
return 1;
}

-(NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:     (NSInteger)component
{
return 10;
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row     forComponent:(NSInteger)component
{
return [NSString stringWithFormat:@"%i",row];
}
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:    (NSInteger)component
{
NSLog(@"Gewählt: Zeile %i",row);

zeile = row;


NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setInteger:row forKey:@"pickerRow"];
[defaults setInteger:zeile forKey:@"myInt"];
[defaults synchronize];

}

-(IBAction)showInt:(id)sender {

NSLog(@"show value %i",zeile);

  }


- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.

self.title = @"Settings";


NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[picker selectRow:[defaults integerForKey:@"pickerRow"] inComponent:0 animated:NO];
zeile = [defaults integerForKey:@"myInt"];


}

- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:    (UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end

【问题讨论】:

  • 如何得知有人使用了选择器?我希望pickerView:didSelectRow: 中的某些内容会发出表重新加载的信号。
  • 另一个问题:从第二个视图切换回第一个视图后,是否有一种简单的方法可以重新加载表格视图?
  • 好的,已解决:在 viewWillAppear [tableview reloadData] 下有效!
  • 太棒了!欢迎来到堆栈溢出 (SO)!请点击问题旁边的复选标记(将其变为绿色)接受答案,以感谢帮助您的人。

标签: iphone xcode tableview


【解决方案1】:

在根视图中移动代码以将您的号码加载到 viewWillAppear 而不是 viewDidAppear。它加载数字太晚了(在加载和显示表格视图之后)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多