抱歉,我是iOS新手。我打算在UITableView
内UIAlertView
。最后我得到了this tutorial
我已经以这种方式实施了UIAlertTableView
课程
UIAlertTableView *alert = [[UIAlertTableView alloc] initWithTitle:@"Choose a number"
message:nil
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:nil, nil];
alert.tableDelegate = self;
alert.dataSource = self;
alert.tableHeight = 120;
[alert show];
然而,在测试之后,我得到了UIAlert显示的空白列表,里面没有任何项目。以前我有一个NSMUtableArray,我想用作数据源。从上面的教程中,似乎使用alert.dataSource = self
完成了分配数据源。然而,我仍然想知道如何使用我的NSMutableArray作为数据源以及它与alert.dataSource
的关系?
答案 0 :(得分:0)
您已告知UIAlertView您的类将作为其数据源,但您还需要至少覆盖以下UITableView数据源方法,此处mutableArray指的是您要用作数据源的可变数组:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [mutableArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
// Set up the cell...
NSString *cellValue = [mutableArray objectAtIndex:indexPath.row];
cell.text = cellValue;
return cell;
}
答案 1 :(得分:0)
我建议你需要创建一个新文件作为alertView的表数据源和委托。 实施:
@interface MyTableSource: UIViewController <UITableViewDataSource, UITableViewDelegate>
@end
@implementation MyTableSource
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 7;
}
- (UITableViewCell *)tableView:(UITableView *)tableViews cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"MyIdentifier";
UITableViewCell *cell = [tableViews dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.text = @"M";
return cell;
}
@end
创建如下警告:
UIAlertTableView *alert = [[UIAlertTableView alloc] initWithTitle:@"Choose a number"
message:nil
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:nil, nil];
MyTableSource *data = [[MyTableSource alloc] init];
alert.tableDelegate = data;
alert.dataSource = data;
alert.tableHeight = 120;
[alert show];
注意:强> 我实现了alertView进行测试,有很多问题。 你需要打电话:
在alertView类中 [self layoutAnimated:YES];
而不是[self setNeedsLayout];
。