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

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
Alex2301
-21 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 33
#1

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

07.04.2014, 11:35. Просмотров 768. Ответов 0
Метки нет (Все метки)

Здравсвуйте, нужно сделать раскрывающуюся таблицу как здесь: 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     Раскрывающаяся таблица
Посмотрите здесь:

Кастомная таблица не отображает ячейки, пока я не буду ее прокручивать - Objective-C
Здравствуйте. Я делаю кастомную таблицу и пытаюсь ее отобразить, но она не показывается, пока я не попытаюсь ее прокрутить. Смотрю в...

Раскрывающаяся форма - C#
собственно как сделать раскрывающуюся форму, как это сделано в самой виндоз например при выводе ошибок: ...

Раскрывающаяся панель - Delphi
Я создал раскрывающуюся панель посредством таймера: procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X, Y:...

Таблица в qt - C++ Qt
Нужно сделать таблицу с 2 колонками, 1 колонка- текст может редактироваться, 2- колонка текст не может редактироваться. Так же есть кнопка,...

Таблица - Delphi
Как создать таблицу вот такого плана http://edu.dvgups.ru/METDOC/ITS/GEOD/GEOD/METOD/ANISIMOVVA/tab11.gif ?:)

Таблица... - HTML, CSS
Не могу написать скрипт, для того чтобы из полей ввода (4 поля) можно было вводить в таблицу значения, и подсчёта строк таблицы...

Таблица - Delphi
Помогите доделать, нужно сделать так, чтобы в поле Edit7 выводилась сумма всех значений столбца З/П Средн. разделенная на 6. Программа...

Таблица - VBA
Пытаюсь считать данные из таблицы, если во второй ячейке втором столбце стоит 10, то вывести на экран слово Hi. Sub Макрос1() Dim m As...

Таблица - Pascal
Здравствуйте. Есть таблица и вычисляются значения функции: ...

таблица в БД - MySQL
вот код регистрации на главной странице &lt;tr&gt; &lt;td width=&quot;477&quot;&gt;&lt;div align=&quot;center&quot;&gt; &lt;table width=&quot;417&quot; border=&quot;0&quot;&gt; ...

Таблица - Pascal
Помогите пожалуйста! Дана таблица чисел a1,a2..an.Подсчитать кол-во различных чисел.Составьте новую таблицу,состоящую из различных...

таблица - QBasic
Составить таблицу Задание: http://s008.***********/i304/1106/28/0046b651293c.jpg


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

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

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