0

我正在尝试在我的 UIAlertView 中添加一个 UITableView 并且它没有显示出来。我只看到标题和消息以及警报视图上的“确定”按钮。

下面是我的代码,我在 iOS 7 上运行。

- (void)showDataReceivedAlert {

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Received Data" message:@"\n\n\n\n\n\n\n\n\n\n\n\n" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

    UITableView *table = [[UITableView alloc]initWithFrame:CGRectMake(10, 40, 264, 120)];
    table.delegate = self;
    table.dataSource = self;
    table.backgroundColor = [UIColor clearColor];
    [alert addSubview:table];
    [alert show];
}


- (NSInteger)tableView:(UITableView *)iTableView numberOfRowsInSection:(NSInteger)iSection {
    return 6;
}


- (UITableViewCell *)tableView:(UITableView *)iTableView cellForRowAtIndexPath:(NSIndexPath *)iIndexPath {
    static NSString *identifier = @"iBeaconDataCell";
    UITableViewCell *cell = [iTableView dequeueReusableCellWithIdentifier:identifier];
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        cell.accessoryType = UITableViewCellAccessoryNone;
    }

    NSString *cellText;
    NSString *cellLabelText;

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    NSData *encodedObject = [userDefaults objectForKey:@"data"];
    MyObj *myData = (MyObj *)[NSKeyedUnarchiver unarchiveObjectWithData:encodedObject];

    switch (iIndexPath.row) {
        case 0:
            cellText = @"Data 1";
            cellLabelText = [NSString stringWithFormat:@"%d", myData.data1];
            break;
        case 1:
            cellText = @"Data 2";
            cellLabelText = [NSString stringWithFormat:@"%d", myData.data2];
            break;
        case 2:
            cellText = @"Data 3";
            cellLabelText = [NSString stringWithFormat:@"%d", myData.data3];
            break;
        case 3:
            cellText = @"Data 4";
            cellLabelText = [NSString stringWithFormat:@"%d", myData.data4];
            break;
        case 4:
            cellText = @"Data 5";
            cellLabelText = [NSString stringWithFormat:@"%f", myData.data5];
            break;
        case 5:
            cellText = @"Data 6";
            cellLabelText = myData.data6;
            break;

        default:
            break;
    }

    cell.textLabel.text = cellText;

    UILabel *cellLabel = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 150.0, 44.0)];
    cellLabel.text = cellLabelText;
    cell.accessoryView = cellLabel;

    return cell;
}
4

2 回答 2

4

默认警报并不意味着采用子视图。(虽然在 ios6 和更早的版本中添加。子视图可能被黑客入侵,但这在 iOS7 中不起作用)

编写您自己的自定义 UIView,其外观和行为类似于警报。

如果您不想自己做的话,周围有很多实现:) 例如在 cocoacontrols.com

于 2013-09-26T22:47:14.103 回答
0

从 iOS 7 你需要像这样添加

[alertview setValue:tableView forKey:@"accessoryView"];

于 2014-06-02T13:11:42.983 回答