Форум программистов, компьютерный форум CyberForum.ru

Раскрывающаяся таблица - Программирование iOS/iPhone

Восстановить пароль Регистрация
 
Alex2301
-21 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 33
07.04.2014, 11:35     Раскрывающаяся таблица #1
Здравсвуйте, нужно сделать раскрывающуюся таблицу как здесь: http://www.imaladec.com/story/dropdowntable
Пробовал делать по примеру, но ничего не вышло. Подскажите что я делаю не так. Закрытие я делаю в методе - (void)didSelectSectionUIButton*)sender

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
//
//  ViewController.m
//  RSSReader
//
//  Created by admin on 3/25/14.
//  Copyright (c) 2014 admin. All rights reserved.
//
 
#import "ViewController.h"
#import "WebViewController.h"
#import "InternetGateway.h"
#import "Item.h"
#import "AFNetworking.h"
#import "CustomCell.h"
#import "SettingsViewController.h"
 
#define RssFilePath    PathForXMLResource(@"0")
 
@interface ViewController ()
 
@end
 
@implementation ViewController
@synthesize mainTV, item,secArray, titleArray;
 
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
         self.title = @"News";
    }
    return self;
}
 
 
- (void)viewDidLoad
{
    [super viewDidLoad];
    secArray = [[NSMutableArray alloc] init];
    titleArray = [[NSMutableArray alloc] init];
    mainTV = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) style:UITableViewStylePlain];
    [mainTV setAutoresizesSubviews:YES];
    [mainTV setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
    [mainTV setDataSource:self];
    [mainTV setDelegate:self];
    [mainTV setBackgroundColor:[UIColor grayColor]];
    [self.view addSubview:mainTV];
    InternetGateway *internetGateway = [[InternetGateway alloc] init];
     SectionTableView *secTV = [[SectionTableView alloc] init];
    [internetGateway getFeedsForUrl:item.link
                            success:^(id responseObject)
     {
         _items=responseObject;
         [titleArray addObject:_items.lastObject];
         [_items removeLastObject];
        [secArray addObject:_items];
         secTV.isOpen = YES;
         [self.mainTV reloadData];
     }
                            failure:^(NSError *error)
     {
         [_items removeAllObjects];
         [self.mainTV reloadData];
     }];
    
    UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
    [refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
    [self.mainTV addSubview:refreshControl];
}
 
 
 
 
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
//     NSLog(@"LOOOOOOOGGG= %lu", (unsigned long)self.secArray.count);
    return self.secArray.count;
   
}
 
 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return YES;
}
 
 
 
- (void)refresh:(id) sender {
    
    [titleArray removeAllObjects];
    [secArray removeAllObjects];
    SectionTableView *secTV = [[SectionTableView alloc] init];
    InternetGateway *internetGateway = [[InternetGateway alloc] init];
    [internetGateway getFeedsForUrl:item.link
                            success:^(id responseObject)
     {
         _items=responseObject;
         [titleArray addObject:_items.lastObject];
         [_items removeLastObject];
         [secArray addObject:_items];
         secTV.isOpen = YES;
         [self.mainTV reloadData];
     }
                            failure:^(NSError *error)
     {
         [_items removeAllObjects];
         [self.mainTV reloadData];
     }];
    
    
[(UIRefreshControl *)sender endRefreshing];
 
}
 
 
- (void)didSelectSection:(UIButton*)sender
{
    
    SectionTableView *secTV= [[SectionTableView alloc] init];
    secTV.ArrayWithItem = [self.secArray objectAtIndex:sender.tag];
    NSMutableArray *items = [[ NSMutableArray alloc] init];
    [items addObjectsFromArray:secTV.ArrayWithItem];
    NSMutableArray *indexPaths = [NSMutableArray array];
    for (int i=0; i<items.count; i++)
    {
        [indexPaths addObject:[NSIndexPath indexPathForRow:i inSection:sender.tag]];
    }
    if (secTV.isOpen==YES)
    {
        secTV.isOpen=NO;
        [self.mainTV deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationLeft];
    }
    else
    {
        secTV.isOpen=YES;
        [self.mainTV insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationRight];
    }
 
}
 
        
#pragma mark - Table data source
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    NSMutableArray *array = [self.secArray objectAtIndex:section];
//    NSLog(@"qwerty = %i", array.count);
    return array.count;
}
 
 
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
  
    
    NSMutableArray *qwerty = [self.secArray objectAtIndex:section];
 
    if (qwerty!=0)
    {
        SectionTableView*  myObj = [self.titleArray objectAtIndex:section];
        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
        button.tag = section;
        button.backgroundColor = [UIColor grayColor];
        
        [button setTitle:myObj.title forState:UIControlStateNormal];
        [button addTarget:self
                   action:@selector(didSelectSection:)
         forControlEvents:UIControlEventTouchUpInside];
        
        return button;
        [qwerty removeLastObject];
        
    }
    return 0;
 
    
    
    
    
//    NSMutableArray *currentSection = [self.secArray objectAtIndex:section];
////    NSString *sectionTitle = [currentSection objectForKey:@"title"];
////    BOOL isOpen = [[currentSection objectForKey:@"isOpen"] boolValue];
////    NSString *arrowNmae = isOpen? @"arrowUp":@"arrowDown";
//    
//    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
//    button.frame = CGRectMake(0.0f, 0.0f, 320.0f, 50.0f);
//    button.tag = section;
//    button.backgroundColor = [UIColor brownColor];
////    [button setTitle:sectionTitle forState:UIControlStateNormal];
//    [button addTarget:self action:@selector(didSelectSection:)
//     forControlEvents:UIControlEventTouchUpInside];
////    [button setImage:[UIImage imageNamed:arrowNmae] forState:UIControlStateNormal];
//    return button;
}
 
 
 
 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *identifier = @"Cell";
    CustomCell *cell = (CustomCell *)[mainTV dequeueReusableCellWithIdentifier:identifier];
    if ( !cell ) {
            cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];
        [cell setAccessoryType:(UITableViewCellAccessoryDisclosureIndicator)];
    }
    [self configureCell:cell atIndexPath:indexPath];
    return cell;
}
 
- (void)configureCell:(CustomCell *)cell atIndexPath:(NSIndexPath *)indexPath
{
//    item = self.items[indexPath.row];
  
    NSMutableArray *qwerty = [self.secArray objectAtIndex:indexPath.section];
//    NSMutableArray *buttonTitle = qwerty.lastObject;
//    [qwerty removeLastObject];
    item = qwerty[indexPath.row];
 
    
    cell.titleLabel.text = item.title;
    cell.titleLabel.font = [UIFont fontWithName:@"Helvetica" size:20.0];
    cell.titleLabel.textColor = [UIColor darkTextColor];
    
    cell.descriptionLabel.text = item.shortDesc;
    cell.descriptionLabel.font = [UIFont fontWithName:@"Helvetica" size:12.0];
    cell.descriptionLabel.textColor = [UIColor lightGrayColor];
}
 
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 120;
}
 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    item = [self.items objectAtIndex:indexPath.row];
    WebViewController *webVC = [[WebViewController alloc] init];
    webVC.requestURL = item.link;
    [self.navigationController pushViewController:webVC animated:YES];
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}
 
 
@end

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//
//  SectionTableView.h
//  RSSReader
//
//  Created by admin on 4/4/14.
//  Copyright (c) 2014 admin. All rights reserved.
//
 
#import <Foundation/Foundation.h>
 
@interface SectionTableView : NSObject
 
@property (strong, nonatomic) NSString *title;
@property (strong, nonatomic) NSMutableArray *ArrayWithItem;
@property (assign) BOOL isOpen;
 
@end

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#import "InternetGateway.h"
#import "Item.h"
#import "CellObject.h"
#import "SettingsViewController.h"
@implementation InternetGateway
@synthesize myItem, sections;
 
 
 
  - (id)initWithRssFile:(NSString *)rssFile
{
    self = [super init];
    if (self) {
        _rssFile = rssFile;
        
    }
    return self;
}
 
//@"http://stfw.ru/rss.php?m=pages"
 
 
- (void)getFeedsForUrl:(NSURL *)url
               success:(void (^)(id responseObject))success
               failure:(void (^)(NSError *error))failure
{
    
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
    
    SettingsViewController *settingsVC = [[SettingsViewController alloc] initWithNibName:nil bundle:nil];
    [settingsVC viewDidLoad];
    for (CellObject *obj in settingsVC.rssObjectArray) {
        if (obj.isFavorite == YES) {
    
   
    AFHTTPClient *client = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:obj.links]];
    [client getPath:@"rss/" parameters:nil
            success:^(AFHTTPRequestOperation *operation, id responseObject)
     {
         NSString *rss = nil;
        
         if ([responseObject isKindOfClass:[NSData class]])
         {
             rss = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
         }
         else
         {
             [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
             rss = (NSString *)responseObject;
         }
         NSError *error = nil;
         DDXMLDocument *document = [[DDXMLDocument alloc] initWithXMLString:rss options:0 error:&error];
         if (error)
         {
             [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
         }
       
         NSArray *nodes = [document nodesForXPath:@"/rss/channel/item" error:&error];
         
         if (error)
         {
             [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
         }
         
         NSMutableArray *results = [[NSMutableArray alloc] init];
       
         for (DDXMLElement *currentArray in nodes)
         {
             Item *item = [self parseXMLNodeForItem:currentArray];
            
             [results addObject:item];
             
             [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
        }
             [results addObject:obj];
            success(results);
         }
     
        failure:^(AFHTTPRequestOperation *operation, NSError *error)
        {
         [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
         failure(error);
        }];
    
        }
    }
}
 
-(id)parseXMLNodeForItem:(DDXMLElement *)element
{
    NSMutableString *desc = [[NSMutableString alloc] initWithString:(NSString *)[[[element elementsForName:@"description"] lastObject] stringValue]];
    
    if (desc && [desc length]>0)
    {
        NSRange r;
            
        while ((r = [desc rangeOfString:@"<[^>]+>" options:NSRegularExpressionSearch]).location != NSNotFound)
        {
            [desc deleteCharactersInRange:r];
        }
    }
    
    NSString *title = [[[element elementsForName:@"title"] lastObject] stringValue];
    NSString *linkString = [[[element elementsForName:@"link"] lastObject] stringValue];
    NSString *shortDesc = desc;
    
    myItem = [[Item alloc] init];
    myItem.title = title;
    myItem.link = [NSURL URLWithString:linkString];
    myItem.shortDesc = shortDesc;
    
    return myItem;
}
 
@end
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2014, 11:35     Раскрывающаяся таблица
Посмотрите здесь:

C# Раскрывающаяся форма
MS Excel {=ТАБЛИЦА(A1;A3)} или {=ТАБЛИЦА(A1;A2) что это?}
Таблица лексем и таблица идентификаторов C++
Производный класс Самоорганизующаяся таблица должен наследовать свойства и методы класса Таблица C#
Проблема с запросом: TRec.Open 'SELECT * FROM таблица Where ((таблица.дата) Like ' & Date & ' & '%') ', DBgen Visual Basic
HTML, CSS Таблица
Раскрывающаяся панель Delphi
HTML, CSS Таблица
Objective-C Кастомная таблица не отображает ячейки, пока я не буду ее прокручивать
MS Access ПодТаблицы с данными(Таблица-Таблица-Таблица-Таблица) и наследованием
Корреляционная таблица (Таблица распределения) MS Excel
Таблица бд и внешняя таблица C#

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 20:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru