我的应用目前正在生成随机数(请参阅下面的代码)。我想要的是在用户点击" Save"之后保存该号码。按钮并在表视图上显示它。
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self.clickyButton setTitle:@"Generate" forState:UIControlStateNormal];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)handleButtonClick:(id)sender {
// Generates numbers 1 to 49, without creating duplicate numbers.
NSMutableSet * numberSet = [NSMutableSet setWithCapacity:5];
while ([numberSet count] < 7 ) {
NSNumber * randomNumber = [NSNumber numberWithInt:(arc4random() % 49 + 1)];
[numberSet addObject:randomNumber];
}
NSArray * numbers = [numberSet allObjects];
self.n1.text = [NSString stringWithFormat:@"%@", [numbers objectAtIndex:0]];
self.n2.text = [NSString stringWithFormat:@"%@", [numbers objectAtIndex:2]];
self.n3.text = [NSString stringWithFormat:@"%@", [numbers objectAtIndex:3]];
self.n4.text = [NSString stringWithFormat:@"%@", [numbers objectAtIndex:4]];
self.n5.text = [NSString stringWithFormat:@"%@", [numbers objectAtIndex:5]];
self.n6.text = [NSString stringWithFormat:@"%@", [numbers objectAtIndex:6]];
}
@end
请解释我如何将其保存在桌面视图中。 xcode初学者。
答案 0 :(得分:1)
您应该创建一个可在整个类范围内访问的变量,而不仅仅是特定的-handleButtonClick:
方法,然后将生成的数字添加到该变量 - 数组,集合等。 ..
从那里,您可以实现表视图以通过var[indexPath.row]
从变量中读取值(假设它是一个数组),然后显示它。一旦数组填充了对象,您将需要调用[tableView reloadData];
以确保tableview显示数据。
答案 1 :(得分:0)
为UITableViewDataSource创建一个NSMutableArray并缓存该数字。
当用户创建的号码时,将此号码添加到NSMutableArray中。
重新加载UITableView并显示所有数字。
答案 2 :(得分:0)
如果你只使用一个数字,你应该考虑在另一个UI元素中显示它,最好是UILabel我会说。
如果你想使用UITableView,你必须用静态单元格创建它(例如在故事板中)或者为它配置数据源和委托对象(现在看起来并不像你想要的那样,除非也许如果你想在列表中显示多个随机数...)
答案 3 :(得分:0)
在任何事情之前,你应该将数组编号作为变量。这样就比创建n1,n2,n3更容易....我将向您展示如何根据NSArray变量定义的现有数字来解决您的问题。
您需要在头文件中实现UITableView委托。因此,在实现委托之后,假设这是您的头文件:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
@property (weak, nonatomic) IBOutlet UITableView *tableView;
@end
然后获取tableview(IBOutlet或以编程方式)并在实现文件中设置dataSource和delegate。你应该在viewDidLoad:方法中这样做:
[_tableView setDelegate:self];
[_tableView setDataSource:self];
完成此操作后,您需要为UITableView实现委托方法。这个:
此方法将告诉Table View需要显示多少行。在你的情况下,NSArray的大小称为数字:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return numbers.count;
}
此方法将告诉表格查看每个单元格上显示的内容(不要忘记将界面构建器中的单元格的细胞标识符分配给#34; Cell&#34;)
- (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];
}
cell.textLabel.text = [numbers objectAtIndex:indexPath.row];
return cell;
}
如果您想在用户触摸表格视图中的单元格时执行某些操作,请使用此方法:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
}
最后,当用户触摸按钮时,要在列表中添加数字,您只需将这些代码行添加到按钮触发的方法中:
- (IBAction)handleButtonClick:(id)sender {
// Generates numbers 1 to 49, without creating duplicate numbers.
NSMutableSet * numberSet = [NSMutableSet setWithCapacity:5];
while ([numberSet count] < 7 ) {
NSNumber * randomNumber = [NSNumber numberWithInt:(arc4random() % 49 + 1)];
[numberSet addObject:randomNumber];
}
//In case you want to delete previous numbers
[numbers removeAllObjects];
numbers = [numberSet allObjects];
[_tableView reloadData];
}