簡體   English   中英

按下tableView popover中的單元格時獲取圖像

[英]Get image when press a cell in tableView popover

我嘗試了解iOS開發人員。 並有一個問題...這里...我有一個帶有pageControl(圖像數組)的簡單scrollview畫廊,還有一個自定義按鈕,用於顯示帶有tableView和圖像名稱的彈出窗口。 我想跟隨...當按一些帶有圖像名稱的單元格時,返回到我需要的圖像上的scrollview畫廊...感謝您的幫助和解答。

Code of ScrollView and PageControl:

-(void)scrollViewMethod {

    for(UIView* view in [scrollView subviews])
    {
        [view removeFromSuperview];
    }

    for ( int i = 0; i < [imgArray count]; i++) {

        //Create objects in pages
        CGRect frame;
        frame.origin.x = self.scrollView.frame.size.width * i;
        frame.origin.y = 0;
        frame.size = self.scrollView.frame.size;
        self.imgView = [[UIImageView alloc]initWithFrame:frame];
        self.imgView.image = [UIImage imageNamed:[imgArray objectAtIndex:i]];
        self.imgView.contentMode = UIViewContentModeCenter;
        [self.scrollView addSubview:self.imgView];

    }

}


-(void)scrollViewDidScroll:(UIScrollView *)sender {

    CGFloat pageWidth = self.scrollView.frame.size.width;
    int page = floor((self.scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
    self.pageControl.currentPage = page;
    //self.pageControl.numberOfPages
    // Disable vertical scroll
    [sender setContentOffset:CGPointMake(sender.contentOffset.x, scrollY)];
}

And Code of custom button and popover:

-(IBAction)showTable:(id)sender {

    UIImage *btnTableImage = [UIImage imageNamed:@"list.png"];

    UIButton *bttn = [UIButton buttonWithType:UIButtonTypeCustom];

    bttn.bounds = CGRectMake( 0, 0, btnTableImage.size.width, btnTableImage.size.height );

    [bttn addTarget:self action:@selector(showTable:) forControlEvents:UIControlEventTouchDown];

    [bttn setImage:btnTableImage forState:UIControlStateNormal];

    UIBarButtonItem *buttonListItem = [[UIBarButtonItem alloc] initWithCustomView:bttn];

    [self.navigationItem setLeftBarButtonItem:buttonListItem];


    if (self._popover) {
        [self._popover dismissPopoverAnimated:YES];
        self._popover = nil;
        return;
    }
    SelectImageTableController *sitc = [self.storyboard instantiateViewControllerWithIdentifier:@"SelectImageTableController"];
    sitc.delegate = self;
    self._popover = [[UIPopoverController alloc]initWithContentViewController:sitc];
    self._popover.delegate = self;
    [self._popover presentPopoverFromBarButtonItem:buttonListItem permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

And tableView:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [imgList count];
}
- (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 = [imgList objectAtIndex:indexPath.row];
    //cell.imageView.image = [UIImage imageNamed:[ivc.imgArray objectAtIndex:indexPath.row]];

    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    return cell;
}

#pragma mark Table View Delegate

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    //ImageViewController *ivc = [[ImageViewController alloc]init];
    NSLog(@"row: %d %@", indexPath.row, cell.textLabel.text);
}

從您的問題中我了解到,在表格視圖單元格中您具有圖像名稱,並且在單擊該單元格時必須顯示該圖像。

現在您還沒有提到圖像的保存位置,但是仍然會嘗試給出答案。 希望您能對您有所了解。

首先創建圖像名稱。

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
NSString *cName= [NSString stringWithFormat@"%@.png",cell.textLabel.text];

我在這里考慮了png作為圖像的擴展。

1.如果圖像保存在文檔文件夾中,則

        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,     NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent:cName];
        UIImage *img = [UIImage imageWithContentsOfFile:getImagePath];

2.如果圖像保存在捆綁軟件中,即保存在應用程序的資源文件夾中

UIImage *img=[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:cell.textLabel.text ofType:@"png"]];

現在img將是您可以用來設置您的imageview圖像的圖像。

您具有所選單元格的indexPath。 每個圖像的X坐標等於self.scrollView.frame.size.width * i。 因此,您可以使用[self.scrollView scrollToRect:rect animation:NO]其中

i = indexPath.row;
rect.origin.x = self.scrollView.frame.size.width * i;
frame.size = self.scrollView.frame.size;

將其放在tableviewdelegate的didSelect方法中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM