以下のコードは機能しますが、希望どおりではありません。UIbuttonをクリックすると、古い値ではなくUITableviewの新しい値が自動的に更新されます。以下のコードは、UIbuttonsを押したときにのみ機能し、その後UITableviewをスクロールすると更新されます。新しい値を持つUItableview。私のアプリケーションでは、UITableviewをmainclass.asのサブクラスとして使用しています。画像を以下に示します。
このようにtestingViewController.hで「testingViewController」であるTableviewをメインクラスに追加します
#import "Inputtableview.h"
@interface testingViewController :UIViewController<UITableViewDelegate,UITableViewDataSource> {
Inputtableview *inputview;
IBOutlet UITableView *inputtbl;
}
@end
testsViewController.mで
- (void)viewDidLoad {
btn1bool=FALSE;
if (inputview == nil) {
inputview = [[Inputtableview alloc] init];
}
[inputtbl setDataSource:inputview];
[inputtbl setDelegate:inputview];
inputview.view = inputview.tableView;
}
今ボタンアクションメソッドで
-(IBAction)input:(id)sender
{
btn1bool=TRUE;
}
私のサブクラスコード「inputtableview.m」を以下に示します
- (void)viewDidLoad {
[super viewDidLoad];
listOfItems=[[NSMutableArray alloc] initWithObjects:@"Iceland",@"Greenland",@"Switzerland",
@"Norway",@"New Zealand",@"Greece",@"Italy",@"Ireland",nil];
array1 = [[NSMutableArray alloc] initWithObjects:@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H", nil] ;
}
#pragma mark -
#pragma mark Table View datasource methods
-(NSInteger) tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section
{
if (btn1bool) {
return [array1 count];
}
else {
return [listOfItems count];
}
[self.tableView reloadData];
}
-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"CellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
NSLog(@"Row: %i", indexPath.row);
if (btn1bool) {
NSString *cellValue = [array1 objectAtIndex:indexPath.row];
cell.text = cellValue;
}
else {
NSString *cellValue = [listOfItems objectAtIndex:indexPath.row];
cell.text = cellValue;
}
return cell;
}
どんな助けでも適用されます。