0

ボタンを押すと、Web ビュー (ブックマークなど) の URL がテーブル ビューに追加されるメイン ビューがあります。唯一の問題は、ロードされないことです。私は何時間もそれに取り組んできましたが、それを理解することはできません。テーブルビューにデータを間違ってロードしていると思いますが、静かではありません。

これは MainViewController.m です。

- (IBAction)bookmark:(id)sender {
    UIActionSheet *actionSheet = 
        [[UIActionSheet alloc] initWithTitle:[[[[self webView] request] URL]
            absoluteString] delegate:nil cancelButtonTitle:@"Cancel"
            destructiveButtonTitle:nil  otherButtonTitles:@"Add", nil];
     [actionSheet showInView:self.view];
}

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
    if (buttonIndex == 0) {
        NSMutableArray *bookmarks = [[[NSUserDefaults standardUserDefaults]
            arrayForKey:@"Bookmarks"] mutableCopy];

        if (!bookmarks) {
            bookmarks = [[NSMutableArray alloc] init];
        }
        [bookmarks addObject:[[[[self webView]request] URL] absoluteString]];
        [[NSUserDefaults standardUserDefaults] setObject:bookmarks
            forKey:@"Bookmarks"];
    }
}

これは BookmarksViewController.m です

- (void)viewDidLoad {
    [super viewDidLoad];

    NSLog(@"%@", bookmarks);

    bookmarks = [[[NSUserDefaults standardUserDefaults]
                  arrayForKey:@"Bookmarks"] mutableCopy];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    [[NSUserDefaults standardUserDefaults] setObject:bookmarks forKey:@"Bookmarks"];

    cell.textLabel.text = [self.bookmarks objectAtIndex:indexPath.row];
    return cell;
}
4

2 に答える 2

0

Bookmarksアプリが最初に実行されるとき、 のキーには何も設定されていませんNSUserDefaults。だから行:

bookmarks = [[[NSUserDefaults standardUserDefaults]
              arrayForKey:@"Bookmarks"] mutableCopy];

に設定されたviewDidLoad葉で。bookmarksnil

アクション シート ハンドラーでは、実際にこれを適切に処理します。

もう 1 つの大きな問題は、次の呼び出しです。

[[NSUserDefaults standardUserDefaults] setObject:bookmarks forKey:@"Bookmarks"];

あなたのcellForRowAtIndexPath...方法で。NSUserDefaultsセルが必要になるたびに更新するのはなぜですか? これをしないでください。

于 2013-09-25T23:08:19.550 に答える